【问题标题】:The text, ntext, and image data types cannot be compared RowNumbertext、ntext 和 image 数据类型无法比较 RowNumber
【发布时间】:2018-10-03 09:19:34
【问题描述】:

我知道这个问题已经解决了很多次,但是经过十次论坛我找不到我的错误......

我使用的是 2008 SQL Server 这是我的查询:

Declare @order varchar(MAX) = 'DESC'
Declare @sort varchar(MAX) = 'Description'

SELECT TOP 10 * from ( SELECT *, ROW_NUMBER() OVER 
(ORDER BY 
(CASE WHEN @sort = 'Name' and @order = 'ASC' THEN NAME 
      WHEN @sort = 'URL' and @order = 'ASC' THEN URL
      WHEN @sort = 'Description' and @order = 'ASC' THEN Description       
      END) ASC, 
(CASE WHEN @sort = 'Name' and @order = 'DESC' THEN NAME
      WHEN @sort = 'URL' and @order = 'DESC' THEN URL
      WHEN @sort = 'Description' and @order = 'DESC' THEN Description
      END) DESC) 
AS RowNum FROM Application) AS MyDerivedTable WHERE MyDerivedTable.RowNum BETWEEN 0 AND 10

还有错误:

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

我也尝试用 nvarchar 替换 varchar,但没有成功。

感谢您的帮助

【问题讨论】:

  • 您的一列将是其中一种类型,请分享表格的 DDL
  • 你说得对,我的表格中有“URL”作为“文本”,谢谢 ;)
  • 请避免使用解决方案编辑您的问题。相反,将其作为答案发布并在时间限制完成后接受。这样,其他人就会知道问题是直接从问题列表中解决的。

标签: sql sql-server-2008


【解决方案1】:

case 表达式返回单一类型。我建议您使用单独的表达式重写order by

ORDER BY (CASE WHEN @sort = 'Name' and @order = 'ASC' THEN NAME END) ASC,
         (CASE WHEN @sort = 'URL' and @order = 'ASC' THEN URL END) ASC,
         (CASE WHEN @sort = 'Description' and @order = 'ASC' THEN Description END) ASC, 
         (CASE WHEN @sort = 'Name' and @order = 'DESC' THEN NAME END) DESC,
         (CASE WHEN @sort = 'URL' and @order = 'DESC' THEN URL END) DESC,
         (CASE WHEN @sort = 'Description' and @order = 'DESC' THEN Description END) DESC

我不确定这是否会解决您的特定问题,这似乎是由于某些列使用了神秘类型。但是,这解决了由于使用具有混合类型的单个 case 表达式而引起的大部分问题。

大概,您正在使用text 列。此类型已被弃用,因此您不应使用它。我强烈建议您将类型更改为varchar(max)nvarchar(max)

【讨论】:

  • 不是转换错误,是排序错误。他们仍然会从这些单独的 CASE 表达式中的至少两个中得到相同的错误。
【解决方案2】:

已解决!我的表定义中有一个“URL”作为“文本”类型,我用 nvarchar 替换了它。谢谢

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 1970-01-01
    • 2011-05-20
    • 2019-09-25
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 2010-10-26
    相关资源
    最近更新 更多