如何动态添加到存储过程中的TSQL Where子句

Jer*_*yOL 3 t-sql sql-server

如何动态添加条件到TSQL Where子句?

我试图避免在两个完整的Select语句之间进行选择.以下内容与我的实际代码非常相似,但不太复杂.

SELECT COUNT(*)
FROM   MyTable
WHERE  ShipDate >= @FirstDayOfMonth
AND    ShipDate <  @LastDayOfMonth
AND    OrderType = 1
AND    NOT OrderCode LIKE '%3'
AND    NOT OrderCode LIKE '%4';
Run Code Online (Sandbox Code Playgroud)

我希望能够根据存储过程参数的值添加或删除最后两个条件.

即:如果@ExcludePhoneOrders = False,请不要使用最后两个Where子句条件.

Kor*_*rey 5

我不确定你是打算包括还是排除,但这里有一个刺.

SELECT COUNT(*)
FROM   MyTable
WHERE  ShipDate >= @FirstDayOfMonth
AND    ShipDate <  @LastDayOfMonth
AND    OrderType = 1
AND    (@ExcludePhoneOrders = False OR (NOT OrderCode LIKE '%3' AND NOT OrderCode LIKE '%4'));
Run Code Online (Sandbox Code Playgroud)

  • 左侧或右侧的逻辑必须为true才能显示行.如果@ExcludePhoneOrders = False,那么它甚至不需要麻烦解析条件的右侧. (2认同)