作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Microsoft Report Builder 3.0 创建报告。我想在 WHERE 子句中添加一个依赖于 bool 参数 @param 的附加条件。在编程中,通过附加 SQL 字符串会很容易,例如:
String sql = "SELECT * FROM tblA WHERE tblA.columnA = 'data' ";
if(param)
{
sql += "AND tblA.columnB IN (SELECT column FROM tbl)";
}
但是如何在纯 SQL 查询中做到这一点呢?我尝试使用 CASE 但似乎不起作用。这是我尝试过的:
SELECT * FROM tblA
WHERE tblA.columnA = 'data'
CASE @param WHEN 1 THEN AND tblA.columnB IN (SELECT column FROM tbl) END
最佳答案
只需使用涉及参数的逻辑:
SELECT *
FROM tblA
WHERE
columnA = 'data' AND
(!param OR columnB IN (SELECT column FROM tbl));
如果 columnA
包含 data
,并且该参数设置为 false,或者该参数已设置,则 WHERE
子句的计算结果将为 true为true,子查询成功。
关于mysql - 报表生成器中 WHERE 子句中的 SQL 可选条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48180760/
我是一名优秀的程序员,十分优秀!