参数为null时where语句中的TSQL情况
我的SP给我带来了很多困难 sp获得两个参数@madeByUserId和@reportedByUserId。 我想要一些像:参数为null时where语句中的TSQL情况,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的SP给我带来了很多困难 sp获得两个参数@madeByUserId和@reportedByUserId。 我想要一些像: select * from table where MadeByUserId = @madeByUserId (if(@reportedByUserID != null) and ReportedByUserID = @reportedByUserID) 基本上,我想在where子句中添加另一个基于@reportedByUserId的null/notnull状态的
select * from table
where MadeByUserId = @madeByUserId (if(@reportedByUserID != null) and ReportedByUserID = @reportedByUserID)
基本上,我想在where子句中添加另一个基于@reportedByUserId的null/notnull状态的过滤条件
可能吗
非常感谢,
Radu试试:
select * from table
where MadeByUserId = @madeByUserId
AND (@reportedByUserID IS null OR ReportedByUserID = @reportedByUserID)
您可以使用
合并
SELECT *
FROM Table
WHERE MadeByUserId = @madeByUserId
AND ReportedByUserID = COALESCE(@reportedByUserID, ReportedByUserID)
这意味着
if @reportedByUserID is `NOT NULL` then
compare ReportedByUserID with @reportedByUserID
else
compare ReportedByUserID with ReportedByUserID
从
结合
返回第一个非空表达式
在它的论点中
添加if语句
如果(@reportedByUserId不为NULL)
选择*
来自表t
其中t.MadeByUserId=MadeByUserId等我想这会给你你想要的
IF (@reportedByUser IS NULL)
select * from table
where MadeByUserId = @madeByUserId
ELSE
select * from table
where MadeByUserId = @madeByUserId and ReportedByUserID = @reportedByUserID)
或者以更简洁的方式:其中MadeByUserId=@MadeByUserId和ReportedByUserID=isnull(@ReportedByUserID,ReportedByUserID)