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

时间:2010-08-22 21:49:59

标签: sql sql-server tsql ntext

如果我使用

之类的东西
[ntext2] <> '1,032.5',

我收到此错误:

  

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

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

2 个答案:

答案 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)

如果您不想进行投射,可以使用LIKEPATINDEX在某些情况下使用,如此MSDN主题所示:http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/6bd4c661-ea0b-435f-af78-097e61549d41

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

在这种情况下,表达式为:

[ntext2] NOT LIKE '1,032.5'