2014-05-08 79 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。非常感謝所有參與者