我有兩個表我試圖加入到一個特定的列(兩者之間共享)。這些列中的數據應該表示數字,但數據實際上是字符,並且其中一些值是非數字的(例如'2,3,4'或'n/a')。我忽略了具有此列的非數字值的行。我治療的列數字的加入,因爲「001」必須匹配「1」,「01」,「0001」等內加入他們的作品,左外加入他們並不:奇數左連接錯誤
SELECT *
FROM Table1 T1
INNER JOIN Table2 T2
ON T1.ID NOT LIKE '%[^ 0-9]%'
AND T2.ID NOT LIKE '%[^ 0-9]%'
AND T1.ID + 0 = T2.ID + 0
-- Success!
SELECT *
FROM Table1 T1
LEFT JOIN Table2 T2
ON T1.ID NOT LIKE '%[^ 0-9]%'
AND T2.ID NOT LIKE '%[^ 0-9]%'
AND T1.ID + 0 = T2.ID + 0
-- Conversion failed when converting the nvarchar value '2,3,4' to data type int.
爲什麼我在外部連接上發生錯誤,而不是內部連接?
P.S .:修復數據是不是選項。這不是我的數據;我無法觸摸它。我必須找到一個方法來處理它。
編輯:我正在運行SQL Server 2008 R2 RTM
所以要清楚,你會得到一個錯誤?或者你沒有得到你期望的數據?如果您收到錯誤,錯誤是什麼? – 2014-09-04 17:29:52
'T1.ID + 0 = T2.ID + 0'應該做什麼?爲什麼不簡單地'T1.ID = T2.ID'? – wdosanjos 2014-09-04 17:37:38
你在查詢中忘記了「外層」。 SELECT * FROM Table1 T1 LEFT Outer JOIN Table2 T2 on ... – 2014-09-04 17:39:29