【问题标题】:SQL Server 2000 complains about comparing TEXT/NTEXT columns but columns are VARCHARSQL Server 2000 抱怨比较 TEXT/NTEXT 列,但列是 VARCHAR
【发布时间】:2013-01-22 16:46:38
【问题描述】:

我有一个 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

我经常在NoteType 字段上执行JOINs 并按Disposition 排序,而不会出现此错误。

有什么线索吗?

【问题讨论】:

  • 您确定列数据类型吗?如果您更改 NoteType LIKE 'Customer' 会发生什么?
  • 桌子上有触发器吗?当您在 Query Analyzer / Management Studio 中运行此更新时,您能否发布整个错误消息,包括 Msg xxx, ... 等部分?

标签: sql-server


【解决方案1】:

正如经常发生的那样,在简化此处要问的问题时,我已将问题的实际原因分解出来。

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

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

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 2010-10-26
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多