大部分のクエリで動作するクエリにLEFT JOINがあります。私はそれが作業していないと理由を把握することはできませんレコードを見つけた。私がやっているSQL Server Left Join LIKEの予期しない結果
:
SELECT t1.StrSerialNumber, t2.serialNumber
FROM table1 AS T1
LEFT JOIN
table2 AS t2 ON t1.StrSerialNumber LIKE '%' + t2.serialNumber + '%'
を... t1.StrSerialNumberは、どちらかの端に余分な文字を持つことができます。それ以外の場合は、これら2つの列が一致する必要があります
これは、1行を除いて、期待どおりに動作しています。
私が実行します。
select * from t2 where serialNumber like '%' + 'number from t1.StrSerialNumber' + '%'
...別のクエリとして、それは私が探しています何を返すん!私は、値LIKEのために直接t2を照会するとき、それがあることを見ることができます。 JOINの一部としては機能しません。
t1のすべての列はnullではありません。ですので、他の欠落している情報はありません。
私も、t2.serialNumberは、t1.StrSerialNumberと一致するが、フィールドにスペースがないことを確認していないUPDATEDなど
どれでも「落とし穴の」このシナリオのために?
ありがとうございました!ここで
EDIT
は、それが失敗した場所の一例です。
下部の緑色のボックスは、クエリ自体の緑色のボックス内にあるJOINステートメントの予想結果を示しています。
クエリ結果の赤いボックスは、「好きな」一致が予想される行を示します。
作業領域のオレンジ色のボックスは、行42のgoogleSN列にあると思われるserialNumberを返すクエリです。
黄色の線は、serialNumberがJOIN内で実行されるべき場所を示しています。
明らかに、私はinvSNのすべての '0'の値に対して「似ている」とは思いません。
これは意味があると思います!
T1は、あなたの 'LIKE'がt1.StrSerialNumber''上にある必要があり、余分な数字を持っている場合「t2」ではない。おそらく、 'LEFT JOIN テーブル2 AS t2 ON t2.serialNumber LIKE '%' + t1.StrSerialNumber + '%''。それ以外の場合は、少なくともサンプルデータセットとクエリの予想結果が必要です。乾杯。 – scsimon
ありがとうございました! – m0lochwalker
それは問題でしたか? – scsimon