2014-05-08 51 views
2

的Microsoft SQL Server 2008 R2(SP1) - 10.50.2550.0(X64)SELECT DISTINCT返回副本 - 无表连接

我的客户给我发了,我一直在使用的数据导入到SQL Server中的Excel电子表格导入功能。

在数据清理操作过程中,我一直在识别重复或接近重复的行,并且此过程已完成99%。

不过,我来完全脱胶,因为执行该从SQL查询窗口

SELECT DISTINCT MyTextColumn FROM MyTable WHERE MyCriterion = 'TEST' 

回报两个明显相同的记录

最初我试图

SELECT DISTINCT LEN(MyTextColumn) FROM MyTable WHERE MyCriterion = 'TEST' 

但该返回一个值 - 换句话说,这两个值分别为相同的长度。

我已经把MyTextColumn的两个值放到了Notepad ++中,并做了一个比较,并且据说“文件是相同的”。我已将这两个值转换为HEX,并将它们进行比较 - 再次相同。

注 - 从电子表格获得的值是VarChar(255),目标列是varchar(max)。不是nvarchar,而是varchar。我还在其他地方寻找了解决方案,但几乎所有其他此类问题都涉及JOIN。

我能想到的唯一的事情是,将这两个值“记入”Notepad ++(通过在查询结果窗口中简单地突出显示它们并复制和粘贴)是以某种方式“丢失”了该列的一些重要组成部分。

有没有人有任何想法,为什么这可能不工作?我完全理解MyTable中其他列中的其他值会有所不同,但我的理解是,DISTINCT关键字仅对SELECT语句中的列进行操作。

非常感谢

爱德华

+0

LEN不修剪它计算字符串的长度了。从[文档](http://technet.microsoft.com/en-us/library/ms190329.aspx)*返回指定字符串表达式的字符数,不包括尾随空格。* –

+2

是的,当您尝试'选择DISTINCT LTRIM(RTRIM(MyTextColumn))...'? –

+0

打我吧,@YuriyGalanter ...必须围绕空白。 –

回答

0

感谢Lamak。

SELECT DISTINCT ASCII(SUBSTRING(MyTextColumn, 99, 1))

返回两行 - 一个是10,另一个是32。非常感谢所有参与者