我认为这将是一个很容易解决的问题,但我一直在谷歌搜索疯狂试图找到答案而我只是没有得到答案。
我想基于包含空值的列对结果进行排序。 SQL Server似乎认为这是一个坏主意。我尝试使用ISNULL
,LIKE
限制它们,以及其他一些方法来尝试使其工作,而这种情况并没有发生。
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.
就像我说的那样,我一直在谷歌上搜索疯狂试图找到这个简单问题的答案,而这只是没有发生。
答案 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)
。 text
是obsolete data type。
答案 2 :(得分:0)
我找到的东西说你只能对varchar进行排序。试试这段代码。
选择c1 从t1 在哪里c1不是NULL ORDER BY强制转换(c1为varchar(MAX))
的src:HTTP://twogeeks.mindchronicles.com/ P = 7