70

如果我使用类似的东西

[ntext2] <> '1,032.5',

我收到此错误:

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

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

4

2 回答 2

76

ntext不推荐使用数据类型以支持数据nvarchar(max)类型。如果您可以更改表中的数据类型,那将是最好的解决方案。varchar那么将其与文字进行比较就没有问题了。

否则,您必须在比较之前转换该值:

cast([ntext2] as nvarchar(max)) <> '1,032.5'

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

cast([ntext2] as nvarchar(max)) <> N'1,032.5'
于 2010-08-22T21:58:48.973 回答
17

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

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

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

[ntext2] NOT LIKE '1,032.5'
于 2010-08-22T22:32:20.460 回答