将NTEXT列与常量值进行比较的正确方法是什么?

noo*_*ber 60 sql t-sql sql-server ntext

如果我使用类似的东西

[ntext2] <> '1,032.5',
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

数据类型ntext和varchar在不等于运算符时不兼容.

最好的解决方案是,如果对任何列类型以相同的方式实现比较.(<>运算符适用于NVARCHAR和INT).

Guf*_*ffa 67

ntext数据类型是赞成不赞成使用的nvarchar(max)数据类型.如果您可以更改表中的数据类型,那将是最佳解决方案.然后将它与varchar文字进行比较是没有问题的.

否则你必须在比较之前转换值:

cast([ntext2] as nvarchar(max)) <> '1,032.5'
Run Code Online (Sandbox Code Playgroud)

您还可以考虑使用nvarchar文字,它解决了一些类似的数据类型问题:

cast([ntext2] as nvarchar(max)) <> N'1,032.5'
Run Code Online (Sandbox Code Playgroud)


kbr*_*ton 12

如果您不想进行强制转换,可以在某些场景中使用LIKE或者PATINDEX,如此MSDN线程所示:http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/6bd4c661-ea0b -435f-af78-097e61549d41

没有通配符的LIKE表达式(在这种情况下)大致相当于对相等性的测试.

在这种情况下,表达式将是:

[ntext2] NOT LIKE '1,032.5'
Run Code Online (Sandbox Code Playgroud)