【问题标题】:MSSQL 2000 database error while using GROUP BY clause使用 GROUP BY 子句时出现 MSSQL 2000 数据库错误
【发布时间】:2017-07-14 05:07:36
【问题描述】:

当尝试运行以下查询以提取数字列的第一个实例时:

SELECT number, comment
FROM workitem
WHERE (NOT (status_lookup_id IN (400, 600))) 
  AND (modified_on < DATEADD(dd, - 5, GETDATE())) 
  AND (due_on < GETDATE())
GROUP BY number, comment

我收到以下错误:

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

我想我理解为什么会抛出错误,但我需要来自 cmets 列的信息。有没有其他方法可以获取这些数据?

【问题讨论】:

  • 表中哪一列的数据类型为:'nvarchar' OR 'text'?
  • ntexttextimage 数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)varchar(max)varbinary(max)See details here
  • 请提供表结构。没有它就不可能解决问题。
  • Sql Server 2000 生命周期结束,并且已经有一段时间了。它不再接收任何更新...甚至没有关键的安全补丁。继续使用它是危险且不负责任的,迁移到受支持的系统应该是工作#1。
  • 在一个理想的世界里,我相信他们会喜欢迁移到新版本的软件。不幸的是,覆盖软件只能在SQL2000上运行。话虽如此,它位于一个无法访问互联网的安全环境中。

标签: sql sql-server


【解决方案1】:

你可以像下面这样投射然后使用:

SELECT     cast(number as varchar(max)), cast(comment as varchar(max))
FROM         workitem
WHERE     (NOT (status_lookup_id IN (400, 600))) AND (modified_on < 
DATEADD(dd, - 5, GETDATE())) AND (due_on < GETDATE())
GROUP BY cast(number as varchar(max)), cast(comment as varchar(max))

如果超过允许的字符,它将截断注释和数字

【讨论】:

  • 服务器:消息 170,级别 15,状态 1,第 5 行第 5 行:“max”附近的语法不正确。这是因为它是一个 SQL 200 数据库吗?
  • @GMR 是的。这就是为什么您应该始终确定您正在使用的 sql server 的版本和版本。目前很少有人使用这么旧的版本——这对您和您的组织来说是一个很大的警告。回到问题 - 你真的需要使用 group by 子句吗?
  • @SMor 对此我深表歉意,但是,这些是我收到的牌。不确定我是否需要 GROUP by 子句。 “数字”列不包含唯一值,我试图只提取包含任何给定数字的第一条记录。在 SQL 2000 中是否有替代方案?
【解决方案2】:

这不是因为分组依据,而是您尝试分组依据的列的数据类型

SELECT number, comment
FROM workitem
WHERE (NOT (status_lookup_id IN (400, 600))) 
    AND (modified_on < DATEADD(dd,-5, GETDATE())) AND (due_on < GETDATE())
GROUP BY cast(number as varchar(max)), cast(comment as varchar(max))

【讨论】:

  • 不幸的是,这是 MSSQL 2000,当我尝试使用 cast 时它会抛出错误。
【解决方案3】:

经过一番谷歌搜索,似乎是您的数据类型错误?你没有发布它们,所以我只是假设。

尝试使用此修复 -> The text, ntext, and image data > types cannot be compared or sorted, except when using IS NULL or LIKE > operator

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    相关资源
    最近更新 更多