姓と名で人を検索するために使用できるストアドプロシージャを作成しようとしています。 FnameとLnameは2つの異なるテーブルにまとめられており、Table1
から引っ張ってきて一致するものがなければTable2
から結果を引きます。最初のテーブルに一致がない場合、2つのテーブルから結果を引き出す
@FName VARCHAR(20) = NULL
@LName VARCHAR(20) = NULL,
SELECT TB1.ID, TB1.FName, TB1.LName
FROM Table1 TB1
LEFT JOIN Table2 TB2
ON TB1.ID = TB2.ID
WHERE 1=1
AND COALESCE(TB1.Fname, '') LIKE '%' + REPLACE(COALESCE(@FName, TB1.Fname, ''), ' ', '%') + '%'
AND COALESCE(TB1.Fname, '') LIKE '%' + REPLACE(COALESCE(@LName, TB1.Fname, ''), ' ', '%') + '%'
私がこれまでに試したのはこれでしたが、すべての記録を取り戻すようです。
WHERE 1=1
AND COALESCE(TB1.Fname, '') LIKE '%' + REPLACE(COALESCE(@FName, TB1.Fname, ''), ' ', '%') + '%'
OR COALESCE(TB2.Fname, '') LIKE '%' + REPLACE(COALESCE(@FName, TB2.Fname, ''), ' ', '%') + '%'
AND COALESCE(TB1.Lname, '') LIKE '%' + REPLACE(COALESCE(@LName, TB1.Lname, ''), ' ', '%') + '%'
OR COALESCE(TB2.Lname, '') LIKE '%' + REPLACE(COALESCE(@LName, TB2.Lname, ''), ' ', '%') + '%'
任意のヘルプやガイダンスが感謝される、私は最後の日かそこらのためにグーグルをしましたが、私は私が間違っているものをグーグルでいますね。
おそらく、WHERE条件をON句に移動したいとします。 – jarlh