选择字段为Distinct,数据类型为Text。 Sql Server

时间:2013-12-10 12:07:48

标签: sql-server sql-server-2008

他们以任何方式选择一个字段为Distinct,其数据类型为Text。

如果我们有一个表T1,其中一个名为Subjects的字段的数据类型为Text

Subjects
--------
Room
--------
Room
--------
window
--------
Door
--------
Door
--------

如果我尝试此查询

Select Distinct (Subjects)
from T1

它给了我这个错误:

The text data type can not be selected as DISTINCT because it is not comparable

当我使用Group时,给我这个错误:

The data types 'text', 'ntext' and 'image' can be compared or sorted, 
except when using IS NULL or LIKE operator.

有什么解决方案吗? 感谢

3 个答案:

答案 0 :(得分:10)

您可以尝试首先将字段转换为varchar:

SELECT DISTINCT CONVERT(VARCHAR(MAX), Subjects) FROM T1

答案 1 :(得分:8)

虽然演员/转换答案有效,但真正的解决方法是停止使用TEXT数据类型。 It has been deprecated for over 8 years。您应该使用VARCHAR(MAX)代替for a whole variety of reasons

答案 2 :(得分:2)

使用CAST

select distinct cast(Subjects as varchar(max)) from T1