我有一个select语句,其中WHERE子句的IN运算符。只要将一些值传递给问号(从java程序传递),查询就可以正常工作。但是当没有传递值时,我会收到语法错误。
select
this_.categoryAddressMapId as category1_1_0_,
this_.categoryId as categoryId1_0_,
this_.addressId as addressId1_0_
from
icapcheckmyphotos.category_address_map this_ <br>
where
this_.addressId in (
?
)
当没有传递参数时,我需要空集。请建议如何修改where子句。提前致谢
答案 0 :(得分:2)
修改你的java程序。如果没有addressIds,或者确保它至少传递一个值,则您的选择是不运行查询。如果addressId是整数字段,则传递-1或类似的东西。就个人而言,我喜欢第一个选项,但这取决于您的要求。
答案 1 :(得分:0)
如何做像
这样的事情where (? is null) OR this_.addressId in ( ? )
如果您的专栏确实接受了NULLS,您可能需要在OR的第一部分添加一些特殊处理
答案 2 :(得分:0)
//伪代码 ...
WHERE 1
if(!null) {
AND this_.addressId in ('stuff')
}