Pregunta

I have a select statement in which the WHERE clause's IN operator. The query works properly as long as some values are passed to question mark (passed from java program). But when there are no values passed, I get a syntax error.

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 (
            ?
     )

When there are no parameters passed, I need null set. Please suggest how to modify the where clause. Thanks in advance

¿Fue útil?

Solución

Modify your java program. Your choices are to not run the query if there are no addressIds, or ensure that it passes at least one value. If addressId is an integer field, pass -1 or something like that. Personally, I like the first option but it depends on your requirements.

Otros consejos

how about doing sometiong like

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

you may need to add some special treatment to the first part of the OR if your columns does accept NULLS

//pseudo code ...

WHERE 1
if(!null) {
   AND this_.addressId in ('stuff')
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top