【发布时间】: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