0

我有一个 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 子句。提前致谢

4

3 回答 3

2

修改你的java程序。如果没有 addressId,您的选择是不运行查询,或者确保它至少传递一个值。如果 addressId 是一个整数字段,则传递 -1 或类似的东西。就个人而言,我喜欢第一个选项,但这取决于您的要求。

于 2013-09-25T22:11:55.610 回答
0

做一些事情怎么样

where (? is null) OR this_.addressId in ( ?  )

如果您的列确实接受 NULLS,您可能需要在 OR 的第一部分添加一些特殊处理

于 2013-09-25T22:12:06.400 回答
0

//伪代码...

WHERE 1
if(!null) {
   AND this_.addressId in ('stuff')
}
于 2013-09-25T22:13:52.210 回答