按包含空值的列排序?

时间:2012-06-07 17:32:41

标签: sql sql-server

我认为这将是一个很容易解决的问题,但我一直在谷歌搜索疯狂试图找到答案而我只是没有得到答案。

我想基于包含空值的列对结果进行排序。 SQL Server似乎认为这是一个坏主意。我尝试使用ISNULLLIKE限制它们,以及其他一些方法来尝试使其工作,而这种情况并没有发生。

SELECT c1
FROM t1
WHERE c1 IS NOT NULL
ORDER BY c1 DESC

SQL Server给我这个错误: The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.

就像我说的那样,我一直在谷歌上搜索疯狂试图找到这个简单问题的答案,而这只是没有发生。

3 个答案:

答案 0 :(得分:3)

c1是text,ntext或image

因为错误说你不能按他们订购

尝试将text / ntext转换为应该执行此操作的varchar(max)。

SELECT c1
FROM t1
WHERE c1 IS NOT NULL
ORDER BY convert(varchar(max),c1) DESC

答案 1 :(得分:1)

ORDER BY cast(c1 as varchar(max)) DESC

并考虑将列c1的类型切换为varchar(max)textobsolete data type

答案 2 :(得分:0)

我找到的东西说你只能对varchar进行排序。试试这段代码。

选择c1 从t1 在哪里c1不是NULL ORDER BY强制转换(c1为varchar(MAX))

的src:HTTP://twogeeks.mindchronicles.com/ P = 7