如果我使用
之类的东西[ntext2] <> '1,032.5',
我收到此错误:
数据类型ntext和varchar在不等于运算符时不兼容。
最好的解决方案是,如果对任何列类型以相同的方式实现比较。 (&lt;&gt;运算符适用于NVARCHAR和INT)。
答案 0 :(得分:64)
不推荐ntext
数据类型支持nvarchar(max)
数据类型。如果您可以更改表中的数据类型,那将是最佳解决方案。然后将它与varchar
字面值进行比较没有问题。
否则你必须在比较它之前转换值:
cast([ntext2] as nvarchar(max)) <> '1,032.5'
您也可以考虑使用nvarchar文字,它解决了一些类似的数据类型问题:
cast([ntext2] as nvarchar(max)) <> N'1,032.5'
答案 1 :(得分:11)
如果您不想进行投射,可以使用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'