【发布时间】:2018-12-23 16:25:08
【问题描述】:
我试图在 CTE 定义之后立即使用 CASE WHEN,但查询只需要 SELECT:
WITH A AS
(...) --long query here
CASE WHEN @parameter = '' THEN
SELECT * FROM A
ELSE
SELECT * FROM A WHERE field like '%' + @parameter + '%'
END
除了使用OR 语句之外,还有其他方法可以使这个查询工作吗?
【问题讨论】:
-
“除了使用 OR 语句” - UNION
-
为什么要使用
CASE来确定选择?为什么不是IF/ELSE? -
如果您从某个应用程序运行此查询并在那里定义@parameter,则在将查询发送到数据库之前在应用程序端执行此逻辑。
-
@dbajtr IF 在这里也不起作用
-
@Fabio 如果
@parameter不为空,我不想将整个结果集发送到应用程序
标签: sql sql-server tsql common-table-expression case-when