2

我有一个 SQL Server 2000 数据库,其表如下所示:

ModifyTime datetime
CompanyID smallint
ProductID smallint
ComponentID int
Disposition varchar(10)
Note text
NoteType varchar(256)

此查询失败:

UPDATE NoteTable
SET Disposition = 'Modified'
WHERE Disposition = '' 
    AND CompanyID = 10
    AND ProductID = 13
    AND ComponentID = 1
    AND NoteType = 'Customer'

错误是:

text、ntext 和 image 数据类型不能进行比较或排序,除非使用 IS NULL 或 LIKE 运算符。

有一个TEXT列,但它根本不参与查询。这两个类似文本的字段都是VARCHAR.

我经常JOIN在现场做 sNoteType并订购,Disposition没有这个错误。

有什么线索吗?

4

1 回答 1

0

正如经常发生的那样,在简化要在这里提出的问题时,我考虑到了问题的实际原因。

实际上,更新发生在 ASP 应用程序中,我在这里表示为“客户”的值作为参数传递给准备好的语句。在创建参数时,我使用了长度为 256 的 adLongVarChar,而不是长度为 256 的 adVarChar。因此,实际上是我比较 VARCHAR(256) NoteType 列时遇到的问题。当我将参数类型固定为准备好的语句时,问题就消失了。

很抱歉打扰您,感谢您的帮助。:-)

于 2013-01-23T01:30:12.010 回答