Sql SELECT DISTINCT返回重复项-无表联接
Microsoft SQL Server 2008 R2 SP1-10.50.2550.0 X64 我的客户向我发送了一份Excel电子表格,我已使用数据导入功能将其导入SQL Server 在数据清理操作期间,我一直在识别重复或接近重复的行,该过程完成了99% 但是,由于从查询窗口执行此SQL,所以我完全没有成功Sql SELECT DISTINCT返回重复项-无表联接,sql,sql-server,sql-server-2008-r2,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' 返回两条明显相同的记录 起初我试过 SEL
SELECT DISTINCT MyTextColumn FROM MyTable WHERE MyCriterion = 'TEST'
返回两条明显相同的记录
起初我试过
SELECT DISTINCT LEN(MyTextColumn) FROM MyTable WHERE MyCriterion = 'TEST'
但这只返回一个值——换句话说,这两个值的长度相同
我将MyTextColumn的两个值放入Notepad++并进行了比较,据称文件是相同的。我已经将这两个值转换为十六进制,并对它们进行了比较——同样,相同
注意-从电子表格获得的值为VarChar255,目标列为varcharmax。不是nvarchar,而是varchar。我还在stackoverflow的其他地方寻找解决方案,但几乎所有其他此类问题都涉及连接
我能想到的唯一一件事是,通过在查询结果窗口中突出显示这两个值并进行复制和粘贴,将这两个值输入Notepad++时,不知何故缺少了列的一些重要组成部分
有人知道为什么这可能不起作用吗?我完全理解MyTable中其他列中的其他值会有所不同,但我的理解是DISTINCT关键字只对SELECT语句中的列进行操作
非常感谢
爱德华谢谢拉马克
选择ISubstringMyTextColumn,99,1
返回两行-一行是10,另一行是32。非常感谢所有参与者LEN在计算字符串长度之前进行修剪。从返回指定字符串表达式的字符数,不包括尾随空格。是的,当您尝试选择DISTINCT LTRIMRTRIMMyTextColumn?打败我,@YuriyGalanter。。。必须包含空格。若要帮助您调试此问题,请尝试使用MyTable中的SELECT DISTINCT LEFTMyTextColumn,其中MyCriteria='TEST'大约从文本长度的一半开始。如果有两个条目,则第一个差异位于的左侧;把它除以二。否则,它就在右边;调整到长度的四分之三。继续这个二进制搜索,直到你找到了文本彼此不同的地方。现在,你可以选择一个不同的子字符串MyTextColumn,99,1并检查结果