SELECT DISTINCT返回重复项 - 没有表JOIN

时间:2014-05-08 14:47:31

标签: sql sql-server sql-server-2008-r2

Microsoft SQL Server 2008 R2(SP1) - 10.50.2550.0(X64)

我的客户向我发送了一个Excel电子表格,我已使用数据导入功能将其导入SQL Server。

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

但是,我完全失败了,因为从查询窗口执行此SQL

SELECT DISTINCT MyTextColumn FROM MyTable WHERE MyCriterion = 'TEST'

返回两个明显相同的记录

最初我试过

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

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

我已将MyTextColumn的两个值放入Notepad ++并完成了一个COMPARE,据称“文件是相同的”。我已将这两个值转换为HEX并进行比较 - 再次相同。

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

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

有谁知道为什么这可能不起作用?我完全理解MyTable中其他列中的其他值会有所不同,但我的理解是DISTINCT关键字仅在SELECT语句中的列上运行。

非常感谢

爱德华

1 个答案:

答案 0 :(得分:0)

感谢Lamak。

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

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