以下の(少し複雑な)バージョンの手順があります。
CREATE PROC sp_Find_ID (
@Match1 varchar(10),
@Match2 varchar(10)
) AS
DECLARE @ID int
SELECT @ID = ID
FROM Table1
WHERE Match1 = @Match1
AND Coalesce(Match2,@Match2,'') = Coalesce(@Match2,Match2,'')
SELECT @ID ID
基本的に、Match1 は必須の一致ですが、Match2 はプロシージャへの入力と検索対象のテーブルの両方でオプションです。2 番目の一致は、入力および/またはテーブルの Match2 値が null である場合、または両方が同じ (null ではない) 値である場合に成功します。
私の質問は次のとおりです。これを行うためのより効率的な(またはさらに読みやすい)方法はありますか?
私はこの方法を数回使用しましたが、毎回少し汚れているように感じます (主観的な汚れは認めます)。