我的查詢中有一個左連接,適用於大多數查詢。我遇到了一個它沒有處理的記錄,但無法找出原因。SQL Server左連接LIKE意外的結果
我做:
SELECT t1.StrSerialNumber, t2.serialNumber
FROM table1 AS T1
LEFT JOIN
table2 AS t2 ON t1.StrSerialNumber LIKE '%' + t2.serialNumber + '%'
... t1.StrSerialNumber會對兩端的多餘的字符。否則,這兩列應該匹配。
這是工作正常(或希望),除了1行,這讓我覺得可能會有更多。
當我運行:
select * from t2 where serialNumber like '%' + 'number from t1.StrSerialNumber' + '%'
...作爲一個單獨的查詢,它不會返回我所期待的!我可以看到,當直接查詢t2值爲LIKE時,它就在那裏。它只是不作爲JOIN的一部分。
t1中的所有列都是非空,所以它不會像有其他一些缺失的信息。
我甚至已更新t2.serialNumber,不匹配t1.StrSerialNumber,但要確保沒有在現場空間等
任何「疑難雜症的」對於這種情況?
謝謝!
EDIT
下面是其中它失敗的例子。
底部的綠框顯示JOIN語句的預期結果,在查詢本身的綠色框內。
查詢結果中的紅色框顯示我期望「喜歡」匹配的行。
工作區中的橙色框是查詢,它返回我期望在第42行的googleSN列中的serialNumber。
黃線只顯示我認爲serialNumber應該在JOIN中進入的位置。
很顯然,我不希望invSN中的所有'0'值都匹配'like'。
我希望這是有道理的!
如果T1有多餘的數字那麼你的'LIKE'需要放在't1.StrSerialNumber'而不是't2'。或許,'LEFT JOIN table2 AS t2 ON t2.serialNumber LIKE'%'+ t1.StrSerialNumber +'%''。否則,我們至少需要一個樣本數據集和您的查詢的預期結果。乾杯。 – scsimon
謝謝你的迴應! – m0lochwalker
是這個問題嗎? – scsimon