我有这个查询,我在Java中运行。在哪里条件选择sql中的所有数据?
select book from com where genre=?;
我动态设置参数genre
。有没有办法有时设置参数,以便选择所有数据?
我有这个查询,我在Java中运行。在哪里条件选择sql中的所有数据?
select book from com where genre=?;
我动态设置参数genre
。有没有办法有时设置参数,以便选择所有数据?
惯用的伎俩是设置选择一切单独的参数:
SELECT book FROM com WHERE genre=? OR 1=?
当您设置的第二个参数0
,按流派过滤使用,但是当你将它设置为1
,返回一切。
如果你愿意改用named JDBC parameters,你可以用一个参数重写,并使用null
表示“选择一切”:
SELECT book FROM com WHERE genre=:genre_param OR :genre_param is null
创建一个不同的查询:
select book from com;
这将让所有行“书”列“COM”。
只需使用通配符。例如, SELECT book FROM com WHERE genre LIKE "%"+seachString+"%";
除非在java实现中不允许这样做。如果允许的话,其他人都没有提到它。 –
这当然是允许的,但它是[Bobby Tables](http://bobby-tables.com/)的配方。 – dasblinkenlight
此外,在问题中没有迹象表明预期的是通配符搜索。如果'genre ='art''真的应该返回'genre ='fartbubbles''的行吗?这个查询将做到这一点。 –
你的意思是你希望能够使用相同的脚本并传入一个忽略你的“Where”参数吗?利用这一点,通过字符串“ALLDATA”中的第二个参数设置为包含所有结果,而忽略你的第一个参数:
select book from com where (genre=? OR "AllData"=?);
可以使用CASE表达式(SQL SQERVER):
select book from com where genre=CASE
WHEN ? IS NOT NULL THEN ?
ELSE genre
END
'是可能吗?'当然,但你必须让我们知道你正在使用哪个数据库。 –