在一个表中,我有一个名为MEMO_TEXT的列,它是一个文本数据类型。当我尝试创建视图并使用GROUP BY时,我会得到以下错误:
Server数据库错误:无法比较或排序文本、ntext和图像数据类型,除非使用的是NULL或LIKE操作符。
当我试图对查询执行一个不同的操作时,我也会得到这个错误。关于如何绕过这件事有什么想法吗?
如果您需要更多的信息,请告诉我。
发布于 2009-06-22 16:13:19
一种方法是将其转换为一个nvarchar(max)
。
这是一种将字符串长度增加到4,000以上的记录在案方法:
nvarchar [ ( n | max ) ]
可变长度Unicode字符串数据。N定义字符串长度,可以是1到4,000之间的值。max表示最大存储大小为2^31-1字节(2GB),存储大小(以字节为单位)是输入+2字节数据的实际长度的两倍。nvarchar的ISO同义词是国家字符的变化和民族特征的变化。
类似的技巧也适用于varchar()。
发布于 2009-06-22 16:16:09
试试这些..。
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))
发布于 2009-06-22 17:11:48
您知道在ntext字段中永远不会重复数据吗?您可以在派生表中对其他字段执行不同的操作,然后使用ntext字段连接到表中,并在外部查询中获取它。
类似于(假设field3是ntext字段)
select mt.idfield, a.field1, a.field2, mt.field3
from mytable mt
join
(select disitinct mt1.idfield, mt1.field1, mot.field2 from mytable mt1
join myothertable mot on mt1.idfield = mot.idfield) a
on a.ifield = mt.idfield
https://stackoverflow.com/questions/1028061
复制相似问题