when values utilizar que multiple mayor ejemplos dentro consulta como clausula sql oracle where-clause

sql - values - if dentro de where oracle



Cláusula WHERE condicional con sentencia CASE en Oracle (1)

Puedes escribir la cláusula where como:

where (case when (:stateCode = '''') then (1) when (:stateCode != '''') and (vw.state_cd in (:stateCode)) then 1 else 0) end) = 1;

Alternativamente, quite el case completo:

where (:stateCode = '''') or ((:stateCode != '''') and vw.state_cd in (:stateCode));

O mejor:

where (:stateCode = '''') or vw.state_cd in (:stateCode)

Soy nuevo en el mundo de Oracle, así que esto podría ser un softbol. Al trabajar con un informe de SSRS, estoy pasando una serie de estados a una vista. El problema es que los usuarios también pueden elegir una selección de la lista de estados llamada "[Sin selección]" ... (esa parte no fue por hacer y estoy atascado con la implementación de las cosas de esta manera)

Si eligen la opción Sin selección, solo quiero devolver todos los estados de forma predeterminada, de lo contrario, devolveré solo la lista de estados que están en mi lista separada por comas.

Esto realmente parece que debería ser fácil pero estoy atascado. Aquí está el código que tengo hasta ahora (solo tratando de hacer que una muestra funcione) pero mis ojos finalmente se han cruzado tratando de hacerlo funcionar.

¿Alguien podría darme alguna dirección en este caso por favor?

begin :stateCode:=''MO,FL,TX''; --:stateCode:=''[ No Selection ]''; end; / select count(*) as StateCount, :stateCode as SelectedVal from hcp_state vw where (case when (:stateCode = '''') then (1) when (:stateCode != '''') then (vw.state_cd in (:stateCode)) (else 0) end) ;