sql >> Databáze >  >> RDS >> Oracle

Příkaz If v rámci klauzule Where

CASE vám může pomoci:

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;

Příkaz CASE vyhodnocuje více podmínek a vytváří jedinou hodnotu. Takže při prvním použití zkontroluji hodnotu status_flag, vrátím 'A', 'T' nebo null podle toho, jaká je hodnota, a porovnám to s t.status. Totéž udělám pro sloupec business_unit s druhým příkazem CASE.



  1. 2 způsoby, jak zobrazit seznam všech funkcí v MariaDB

  2. Klíčové slovo Oracle 'Partition By' a 'Row_Number'

  3. Jak funguje funkce REGEX_REPLACE() v MySQL

  4. Výkonnostní překvapení a předpoklady:Libovolné TOP 1