sql >> Databasteknik >  >> RDS >> Oracle

If-uttalande inom Where-klausulen

CASE kan hjälpa dig:

SELECT t.first_name,
       t.last_name,
       t.employid,
       t.status
  FROM employeetable t
 WHERE t.status = (CASE WHEN status_flag = STATUS_ACTIVE THEN 'A'
                        WHEN status_flag = STATUS_INACTIVE THEN 'T'
                        ELSE null END)
   AND t.business_unit = (CASE WHEN source_flag = SOURCE_FUNCTION THEN 'production'
                               WHEN source_flag = SOURCE_USER THEN 'users'
                               ELSE null END)
   AND t.first_name LIKE firstname
   AND t.last_name LIKE lastname
   AND t.employid LIKE employeeid;

CASE-satsen utvärderar flera villkor för att producera ett enda värde. Så vid den första användningen kontrollerar jag värdet på status_flag, returnerar 'A', 'T' eller null beroende på vad det har för värde, och jämför det med t.status. Jag gör samma sak för kolumnen business_unit med en andra CASE-sats.



  1. LENGTH() Funktion i Oracle

  2. Vad är MySQL Workbench?

  3. MySQL/skrivfilfel (felkod 28)

  4. Att ha både en skapad och senast uppdaterad tidsstämpelskolumn i MySQL 4.0