如何在 Where 子句条件中编写动态删除条件



>我有一个查询如下:

SELECT * FROM mytable WHERE USER_ID = ?

然后我使用准备好的语句设置USER_ID。有没有办法使用相同的查询和预准备语句来检索数据而无需任何过滤?也许像下面的东西?

SELECT * FROM mytable WHERE USER_ID = *

我想使用相同的查询和预准备语句设置方法来获取等效于SELECT * FROM mytable

我经历了 sqlANYALL但它们似乎不能满足我的问题。

如果我理解正确,您可以使用这样的条件。

将参数设置为默认值或检查@USER_ID,在本示例中我将默认值设置为NULL。如果要获取所有数据,可以@USER_ID设置为NULL,否则按userID查询

DECLARE @USER_ID INT = NULL;
SELECT * 
FROM mytable
WHERE (@USER_ID IS NULL) OR USER_ID = @USER_ID

这是来自 sql 服务器的示例

SQLfiddle

最新更新