Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server :IN ('asd') ne fonctionne pas lorsque la colonne est NTEXT

Un IN list n'est qu'un raccourci pour les conditions OR. Le LIKE la clause fonctionne avec NTEXT et TEXT des champs. Vous pouvez donc combiner ces deux idées pour y parvenir :

WHERE (
       someNtext LIKE N'asd'
OR     someNtext LIKE N'asd1'
      )

Cependant, comme @marc_s l'a suggéré dans un commentaire sur la question, NVARCHAR(MAX) est préféré car toutes les fonctions de chaîne fonctionnent avec (et le TEXT , NTEXT , et IMAGE les types de données sont obsolètes depuis SQL Server 2005). Vous pourriez faire une conversion en ligne telle que :

WHERE CONVERT(NVARCHAR(MAX), someNtext) IN (N'asd', N'asd1')

mais cela ne fonctionnerait probablement pas aussi bien que d'utiliser le LIKE clause avec OR conditions.

Veuillez noter : Lorsque vous travaillez avec NTEXT / NVARCHAR / NCHAR / XML données, il est préférable de toujours préfixer les littéraux de chaîne avec un "N" majuscule. Ne pas le faire peut entraîner une perte de données pour tous les caractères non pris en charge par la page de code associée au classement par défaut de la base de données.

Pour plus d'informations sur l'utilisation des classements / encodages / Unicode / chaînes en général dans SQL Server, veuillez visiter :https://Collations. Infos/