Track Id是我的应用程序中的可选字段。 情况1:如果我传递有效的轨道ID,它应该返回相应的行。 情况2:如果传递了无效的track id,则不应返回任何行。 情况3:如果没有传递跟踪ID,则应返回所有行
DECLARE @transaction_ID INT
SELECT @transaction_ID = Transaction_ID FROM myTable WHERE TRACK_ID= @Track_Id
我的条件是:
WHERE (@transaction_ID IS NULL OR myTable.Transaction_ID = @transaction_ID)
AND (amount<>0)
符合上述条件1和3的情况正常。但第二个案件失败了。当我传递无效的曲目ID时,所有行都会返回。请更正查询以处理案例2.提前致谢。
答案 0 :(得分:1)
继续查询@Track_ID
:
WHERE (
(@transaction_ID IS NULL AND @Track_Id IS NULL) OR
myTable.Transaction_ID = @transaction_ID)
AND (amount<>0)
(您希望NULL
@Transaction_ID
使WHERE
子句成功的唯一情况是案例3.在案例2中,传递了非空@Track_Id
但是@Transaction_ID
将为NULL
,因为没有返回任何行,因此我们正在尝试处理这种情况)
答案 1 :(得分:0)
尝试这样的事情
其中1 =(@TrackId = 1或TRACK_ID = @Track_Id然后1其他0结束时的情况)
如果您想要所有数据,则传递1,
当想要根据TrackID的数据传递@trackID值时 当你不想要应用的条件时传递null