sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server:IN ('asd') no funciona cuando la columna es NTEXT

Un IN list es solo una forma abreviada de condiciones OR. El LIKE cláusula funciona con NTEXT y TEXT campos. Entonces, puedes combinar esas dos ideas para hacer esto:

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

Sin embargo, como sugirió @marc_s en un comentario sobre la Pregunta, NVARCHAR(MAX) se prefiere ya que todas las funciones de cadena funcionan con él (y el TEXT , NTEXT y IMAGE tipos de datos han quedado obsoletos a partir de SQL Server 2005). podrías haga una conversión en línea como:

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

pero probablemente eso no funcionaría tan bien como usar LIKE cláusula con OR condiciones.

Tenga en cuenta: Cuando se trabaja con NTEXT / NVARCHAR / NCHAR / XML datos, lo mejor es siempre prefijo literales de cadena con una "N" mayúscula. No hacerlo puede provocar la pérdida de datos de cualquier carácter no compatible con la página de códigos asociada con la intercalación predeterminada de la base de datos.

Para obtener más información sobre cómo trabajar con intercalaciones/codificaciones/Unicode/cadenas en general en SQL Server, visite:https://Collations. Información/