2

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

我想根据包含空值的列对结果进行排序。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.

就像我说的那样,我一直在疯狂地搜索这个简单问题的答案,但它并没有发生。

4

3 回答 3

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
于 2012-06-07T17:35:15.900 回答
1
ORDER BY cast(c1 as varchar(max)) DESC

并考虑将列c1的类型切换为varchar(max). text是一种过时的数据类型

于 2012-06-07T17:37:57.177 回答
0

我发现一些东西说你只能对 varchar 进行排序。试试这段代码。

SELECT c1 FROM t1 WHERE c1 IS NOT NULL ORDER BY cast(c1 as varchar(MAX))

来源:http://twogeeks.mindchronicles.com/?p=7

于 2012-06-07T17:40:22.940 回答