是否有任何方法可以通过SQL Server 2005中的文本(或ntext)进行DISTINCT或分组?

Asc*_*ian 27 sql sql-server types

在表格中,我有一个名为MEMO_TEXT的列,它是一种文本数据类型.当我尝试创建一个视图并使用GROUP BY时,我收到以下错误:

SQL Server数据库错误:无法比较或排序text,ntext和image数据类型,除非使用IS NULL或LIKE运算符.

当我尝试对查询执行DISTINCT时,我收到此错误.关于如何解决这个问题的任何想法?

如果您需要更多信息,请告诉我.

Row*_*haw 38

围绕它的一个黑客是把它作为一个nvarchar(max).

这是一种将字符串长度增加到4,000以上的文档化方法:

nvarchar [ ( n | max ) ]

可变长度的Unicode字符串数据.n定义字符串长度,可以是1到4,000之间的值.max表示最大存储大小为2 ^ 31-1个字节(2 GB).存储大小(以字节为单位)是输入数据的实际长度的两倍+ 2个字节.nvarchar的ISO同义词是国家字符变化和国家字符变化.

类似的技巧适用于varchar().

  • +1根本不会称之为hack,nvarchar(max)取代ntext. (5认同)
  • 尽管如此......将底层结构更改为nvarchar(max)并不是一件坏事. (4认同)

Sco*_*vey 24

试试这些......

SELECT DistinctMemo = DISTINCT(CAST(MEMO_TEXT AS varchar(max)))
FROM   MyTable

-- or

SELECT DistinctMemo = CAST(MEMO_TEXT AS varchar(max))
FROM   MyTable
GROUP BY CAST(MEMO_TEXT AS varchar(max))
Run Code Online (Sandbox Code Playgroud)