SQL 去掉重复行问题 Distinct 报错

ballatong 2019-08-09 11:24:17
各位大神,

我有张表格字段中含有null的重复行数据怎么去重复?
例如:

userid username cardcode aliasname
11 张三 AA null
12 李四 bb dog
11 张三 AA null


用 Distinct 报如下错误

The ntext data type cannot be selected as DISTINCT because it is not comparable.
...全文
346 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2019-08-09
  • 打赏
  • 举报
回复
楼主这个问题不是null的问题,是字段类型ntext 不允许使用distinct的问题,转换一下就可以了
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([userid] int,[username] nvarchar(22),[cardcode] nvarchar(22),[aliasname] ntext)
Insert #T
select 11,N'张三',N'AA',null union all
select 12,N'李四',N'bb',N'dog' union all
select 11,N'张三',N'AA',null
Go
--测试数据结束
--[aliasname]设置为ntext具体根据楼主表字段实际情况
SELECT DISTINCT userid,username,cardcode,CONVERT(NVARCHAR(max),aliasname) AS aliasname
FROM #T


datafansbj 2019-08-09
  • 打赏
  • 举报
回复
ntext类型字段不支持 Distinct 操作,不是 null 引起的。你可以将 ntext 转换成 nvarchar 类型再 Distinct,如: Select Disctint(Cast(aliasname) as nvarchar(100)) from xxx
雨夹雪 2019-08-09
  • 打赏
  • 举报
回复
你的表 有字段 数据类型 是 ntext ,这个是类型不能参加比较运算,要么你改类型,要么查询的时候 转换一下,转换成nvarchar

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧