SQL DISTINCT不会删除重复项

时间:2016-06-15 12:06:16

标签: sql sql-server duplicates distinct

我使用下面的查询来删除重复项。但它仍然显示重复项。你能告诉我为什么吗?

select DISTINCT a.Company 
from [Legacy].[dbo].[Attorney] as a 

enter image description here

更新:以下一个也无法正常工作。您能告诉我原因吗?

select DISTINCT ltrim(rtrim(a.Company)) from [Legacy].[dbo].[Attorney] as a

更新2:现在,它显示3.我不知道为什么?

select  DISTINCT ltrim(rtrim(a.Company)),convert(varbinary(100), a.Company) from [Legacy].[dbo].[Attorney] as a  

enter image description here

1 个答案:

答案 0 :(得分:5)

正如您最新的屏幕截图所示,不同之处在于:

  • 带有“数字”17的行以字母“n”结尾:6E00 = 0x006E
  • Debug之后带有“数字”18的行以两个空格结尾:n = 2x 0x0020
  • 20002000之后带有“数字”19的行以CR + LF换行符结束:n = 0x000D + 0x000A

因此,真正的三个名称不同,它只是查询工具中显示行的 visual 差异。

要在导入期间修复此问题,您必须从字符串末尾修剪空格,这应该处理这3个不同的字符。请注意,0D000A00LTRIM仅删除“空白”,文档中进一步说明只考虑空格。因此,您必须使用不同的修剪功能(如您正在使用的编程语言)来进行修剪。