Rad*_*u D 10 sql t-sql sql-server
我有一个SP给了我很多困难时期.
sp得到两个参数@madeByUserId和@reportedByUserId.我希望有类似的东西:
select * from table
where MadeByUserId = @madeByUserId (if(@reportedByUserID != null) and ReportedByUserID = @reportedByUserID)
Run Code Online (Sandbox Code Playgroud)
基本上我想在where子句中创建一个案例,以包含基于@reportedByUserId的null/not null状态的另一个过滤条件
那可能吗?
非常感谢,Radu
尝试:
select * from table
where MadeByUserId = @madeByUserId
AND (@reportedByUserID IS null OR ReportedByUserID = @reportedByUserID)
Run Code Online (Sandbox Code Playgroud)
你可以用COALESCE.
SELECT *
FROM Table
WHERE MadeByUserId = @madeByUserId
AND ReportedByUserID = COALESCE(@reportedByUserID, ReportedByUserID)
Run Code Online (Sandbox Code Playgroud)
这转化为
if @reportedByUserID is `NOT NULL` then
compare ReportedByUserID with @reportedByUserID
else
compare ReportedByUserID with ReportedByUserID
Run Code Online (Sandbox Code Playgroud)
来自MSDN
合并
返回其参数中的第一个非空表达式.
| 归档时间: |
|
| 查看次数: |
9316 次 |
| 最近记录: |