MSSQL使用Merge和可为空的参数

时间:2015-10-01 05:35:40

标签: sql sql-server merge

我们有一个存储过程,它接受四个可以为null的参数 - 例如

@FirstName NVARCHAR(50)
@LastName NVARCHAR(50)
@Age INT
@PhoneNumber NVARCHAR(15)

我们有一个名为ID (INT, NOT NULL, IDENTITY)

的主键的人员表

到目前为止,我们一直在对数据库运行查询

SELECT * 
FROM Person 
where FirstName = ISNULL(@FirstName, FirstName) 
  AND LastName = ISNULL(@LastName, LastName) 
  AND AGE = ISNULL(@Age, AGE) 
  and PhoneNumber = ISNULL(@PhoneNumber, PhoneNumber)

我想知道是否可以使用MSSQL的MERGE语句来完成上述操作

e.g。

create table #personSearch (ID INT NOT NULL)

MERGE #personSearch AS T  
    USING Person AS S
    ON 
           T.ID = S.ID
    WHEN NOT MATCHED BY TARGET 
    AND s.ID = @ID
    THEN  
    INSERT (ID)
    VALUES (s.ID);

那会触及人员表中临时表中不存在的那些记录 - 我的问题是我该如何处理其他条款?

使用MERGE进行此操作是否值得?

由于

0 个答案:

没有答案