Oracle
 sql >> база данни >  >> RDS >> Oracle

Условна клауза WHERE с израз CASE в Oracle

Можете да напишете where клауза като:

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

Като алтернатива премахнете case изцяло:

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

Или още по-добре:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00257:грешка в архиватора. Свързване само вътрешно, докато не бъде освободено.

  2. Запомнена процедура на Oracle:връща както набор от резултати, така и изходни параметри

  3. Oct2014 CPU се срива ArcGIS Desktop

  4. Изтрийте с ляво присъединяване в Oracle 10g

  5. Oracle SQL връща редове по произволен начин, когато не се използва ред по клауза