0
我试图编写一个查询,该查询具有可选的输入参数。如果该参数留空,我必须从表中选择每条记录。如果该参数不是空的,我只能通过它提供的值进行过滤。我的想法是使用CASE
声明,但由于某种原因,无论我放入@list
变量,我都会得到空结果集。任何更好的想法?在WHERE子句中使用不同场景的SQL语句
SELECT * FROM my_tables
WHERE column_one IN (
CASE
WHEN LEN(@list) > 0 THEN @list
ELSE (SELECT column_one FROM my_table) END
)
Case _expression_。 – jarlh
在WHERE和ON子句中使用AND/OR而不是CASE通常更好。 – jarlh
我有一个类似的问题。请检查我在这里得到的回复https://stackoverflow.com/questions/25872970/where-clause-selecting-term-codes –