在高层次上,这听起来微不足道,但事实证明我已经摸不着头脑了几个小时。
情况:
我有表T
,有列a,b,c,d,e
。列a
包含一个字符串,而b,c,d,e
每个列包含一个布尔值。
我允许用户执行一种搜索,我提示用户输入值a,b,c,d,e
,并返回所有这些值都匹配的行。
在一个完美的世界中,用户输入所有值(比如说a="JavaScript"
, b="true"
, c="false"
, d="false"
, e="true"
),结果查询(在 Scala 中,引用一个运行 MySQL 的远程数据库)可能看起来像这样:
connection.createStatement().executeQuery("SELECT * FROM T
WHERE a = '" + a_input + "'
and b = " + b_input + "
and c = " + c_input + "
and d = " + d_input + "
and e = " + e_input + ";")
问题:
我为用户提供了“放松”约束的选项,因此a_input=""和b_input=""等可能...所有字段a,b,c,d,e都可能为空("" ) 如果一个字段被省略,它不应该影响结果响应。换句话说,如果c
未输入,则结果可以包含c
TRUE或FALSE的条目
问题:
我如何编写一个查询来涵盖所有字段可能为空、只有一些字段或没有字段的情况?