0

WHERE 句の IN 演算子を含む select ステートメントがあります。一部の値がクエスチョン マークに渡される (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 (
            ?
     )

渡されたパラメーターがない場合は、null を設定する必要があります。where句を変更する方法を提案してください。前もって感謝します

4

3 に答える 3

2

Java プログラムを変更します。addressId がない場合はクエリを実行しないか、少なくとも 1 つの値が渡されるようにするかを選択します。addressId が整数フィールドの場合は、-1 などを渡します。個人的には、最初のオプションが気に入っていますが、要件によって異なります。

于 2013-09-25T22:11:55.610 に答える
0

のようなことをするのはどうですか

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

列がNULLを受け入れる場合は、ORの最初の部分に特別な処理を追加する必要がある場合があります

于 2013-09-25T22:12:06.400 に答える