sql-server - 如何在存储过程中动态添加到 TSQL Where 子句

标签 sql-server tsql

如何在 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';

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

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

最佳答案

我不确定您是要包含还是排除,但这里有一个尝试。

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'));

关于sql-server - 如何在存储过程中动态添加到 TSQL Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6431472/

相关文章:

sql - 将 SQL Server 中的更改记录在审核表中

sql - 如何在SQL中使用 "With"子句创建表

sql - 选择具有默认值的可空位

tsql - t-sql : Error converting data type varchar to numeric in then statement

sql-server - 将对象保存到数据库的良好做法

C# + DockerCompose - 在尝试连接之前等待 MS SQL Server Docker 容器启动

c# - DacPac 在导出或导入时排除用户和登录名

sql-server - 1/1/1753 在 SQL Server 中有何意义?

sql-server - 在 ISNULL 中选择语句

c# - 在 .NET 中的事务期间插入之前获取新 ID