Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SELECT DISTINCT返回重复项-无表联接_Sql_Sql Server_Sql Server 2008 R2 - Fatal编程技术网

Sql SELECT DISTINCT返回重复项-无表联接

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

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++并进行了比较,据称文件是相同的。我已经将这两个值转换为十六进制,并对它们进行了比较——同样,相同

注意-从电子表格获得的值为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并检查结果