SQL DISTINCT不会删除重复项

Sam*_*ath 3 sql sql-server distinct duplicates

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

select DISTINCT a.Company 
from [Legacy].[dbo].[Attorney] as a 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新:下面一个也没有用.你能告诉我为什么吗?

select DISTINCT ltrim(rtrim(a.Company)) from [Legacy].[dbo].[Attorney] as a
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

ang*_*son 5

从您最新的屏幕截图中可以看出,区别在于:

  • 带有"数字"17的行以字母'n'结尾:6E00 = 0x006E
  • 之后带有"数字"18的行以n两个空格结束:20002000= 2x 0x0020
  • 之后带有"数字"19的行以nCR + LF 换行序列结束:0D000A00= 0x000D + 0x000A

所以,三个名字真的不同的,它只是没有一个可视化查询工具,它显示你的行差.

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