如何返回MYSQL数据库表中任何特定列的所有行值-用于JDBC上的动态SQL查询调用

pdkcd3nj  于 2022-12-28  发布在  Mysql
关注(0)|答案(2)|浏览(133)

我正在使用JDBC,并试图弄清楚如何动态创建查询-这被证明是一个相当具有挑战性的壮举。我可以在SQL查询中放入什么输入,让它返回给定列的任何输入?
例如,

SELECT * FROM customers WHERE name = ?;

实际上我希望前面的语句与

SELECT * FROM customers;

除了替换"Where name =?"之外,我是否可以用什么来替换?,以使数据库返回name列中具有任何值的所有行?
这可能听起来很蠢,但我试过了

SELECT * FROM customers WHERE name = *;

但不幸的是,这没有奏效。

yzckvree

yzckvree1#

至少有一个解决方案:

SELECT * FROM customers WHERE name = coalesce(?, name);

但是,当?不为空时,此方法将禁用索引搜索
编辑:使用合并而不是Oracle特定的nvl
EDIT2:此解决方案不适用于空值
另一种选择是使用第二个参数作为“gimme more”的标记

SELECT * FROM customers WHERE name = ? or ? = 1;
bpzcxfmw

bpzcxfmw2#

好了,我想我已经从another post.中找到了答案,基本上只需调用

SELECT * FROM customers WHERE name = name OR name IS NULL;

这对我很有效。

相关问题