0

Track Id 是我的应用程序中的可选字段。案例 1:如果我传递了有效的轨道 ID,它应该返回相应的行。情况 2:如果传递了无效的 track id,则不应返回任何行。情况 3:如果没有通过 track id,则应返回所有行

DECLARE @transaction_ID INT     
SELECT @transaction_ID = Transaction_ID FROM myTable WHERE TRACK_ID= @Track_Id 

我的 where 条件是:

WHERE (@transaction_ID IS NULL OR myTable.Transaction_ID = @transaction_ID)            
  AND (amount<>0)  

在上述条件 1 和 3 情况下工作正常。但第二个案例失败了。当我传递无效的轨道 ID 时,所有行都将返回。请更正查询以处理案例2。提前致谢。

4

2 回答 2

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(您希望使该子句成功的唯一情况是案例 3。在案例 2 中,传递WHERE了一个非空值,但是因为没有返回任何行,所以这就是我们要处理的情况)@Track_Id@Transaction_IDNULL

于 2013-06-12T10:04:37.173 回答
0

尝试这样的事情

其中 1=(@TrackId = 1 或 TRACK_ID= @Track_Id then 1 else 0 end 的情况)

当您想要所有数据时,请传递 1 ,

当希望数据按照 TrackID 传递 @trackID 值时,当您不满足要应用的条件时传递 null

于 2013-06-12T10:05:21.890 回答