pmi*_*lio 1 sql stored-procedures
嗨,我有一个存储过程,它将有一个动态子句,这就是我的存储过程的样子;
SELECT Comment.AddDate,Event.StartTime,Users.Name
FROM Comment
JOIN Users on Users.USERS_ID = Comment.UserID
JOIN Event ON Users.USERS_ID = Event.UserID
Run Code Online (Sandbox Code Playgroud)
如果我传递变量@Name,那么存储过程应该如下所示;
SELECT Comment.AddDate,Event.StartTime,Users.Name
FROM Comment
JOIN Users on Users.USERS_ID = Comment.UserID
JOIN Event ON Users.USERS_ID = Event.UserID
WHERE Name = @Name
Run Code Online (Sandbox Code Playgroud)
但是有些情况下,传入的@Name i将为空,这意味着我希望返回所有内容而不是基于特定名称.
在某些情况下我也会传递一个偶数,我该怎么做呢?
您可以COALESCE在where子句中使用该函数来使用变量或现有值,例如:
WHERE Name = COALESCE(NULLIF(@Name, ''), Name)
AND EventID = COALESCE(@EventID, EventID)
更新:
我NULLIF在COALESCE其中添加了一个函数,该函数表示如果@Name的值为空字符串,则将其视为NULL,从而允许COALESCE函数正常工作.