type - tipos de datos en sql server pdf
¿Cuál es la forma correcta de comparar una columna NTEXT con un valor constante? (2)
El tipo de datos ntext
está en desuso en favor del tipo de datos nvarchar(max)
. Si puede cambiar el tipo de datos en la tabla, esa sería la mejor solución. Entonces no hay problema para compararlo con un literal varchar
.
De lo contrario, debería arrojar el valor antes de compararlo:
cast([ntext2] as nvarchar(max)) <> ''1,032.5''
También puede considerar el uso de un literal nvarchar, que resuelve algunos problemas similares de tipo de datos:
cast([ntext2] as nvarchar(max)) <> N''1,032.5''
Si uso algo como
[ntext2] <> ''1,032.5'',
Me sale este error:
Los tipos de datos ntext y varchar son incompatibles en el operador no igual a.
La mejor solución posible sería si la comparación se implementa de la misma manera para cualquier tipo de columna. (<> operador es aplicable para NVARCHAR e INT).
Si prefiere no realizar el reparto, puede hacerlo en algunos escenarios usando LIKE
o PATINDEX
, como se muestra en este hilo de MSDN: http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/6bd4c661-ea0b-435f-af78-097e61549d41
La expresión LIKE, sin comodines, sería (en este caso) más o menos equivalente a una prueba de igualdad.
En este caso, la expresión sería:
[ntext2] NOT LIKE ''1,032.5''