我有一个带有以下(稍微复杂一点)版本的程序:
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 在过程输入和正在搜索的表上都是可选的。如果输入和/或表 Match2 值为空,或者它们都是相同(非空)值,则第二次匹配成功。
我的问题是:有没有更有效(甚至更易读)的方式来做到这一点?
这种方法我用过几次,每次都觉得有点被玷污(诚然,主观肮脏)。