繁体   English   中英

SQL DISTINCT不会删除重复项

[英]SQL DISTINCT is not removing duplicates

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

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

在此输入图像描述

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

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  

在此输入图像描述

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

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

所以,三个名字真的不同的,它只是没有在查询工具显示您行的视觉差异。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM