sql >> Database >  >> RDS >> Oracle

Toegang/jet-equivalent van Oracle's decodering

De dichtstbijzijnde analogie is de SWITCH() functie bijv.

Orakel:

SELECT supplier_name,
       decode(supplier_id,  10000, 'IBM',
                            10001, 'Microsoft',
                            10002, 'Hewlett Packard',
                                   'Gateway') result
  FROM suppliers;

Toegang tot database-engine

SELECT supplier_name,
       SWITCH(supplier_id = 10000, 'IBM',
              supplier_id = 10001, 'Microsoft',
              supplier_id = 10002, 'Hewlett Packard',
              TRUE, 'Gateway') AS result
  FROM suppliers; 

Merk op dat met de SWITCH() functie moet je elke keer het volledige predikaat opgeven, dus je bent niet beperkt tot het gebruik van alleen supplier_id. Gebruik voor de standaardwaarde een predikaat dat voor de menselijke lezer duidelijk is dat het WAAR is, b.v. 1 = 1 of eigenlijk gewoon TRUE :)

Iets dat misschien niet duidelijk is, is dat de logica in de SWITCH() functie maakt geen kortsluiting, wat betekent dat elke uitdrukking in de functie foutloos moet kunnen worden geëvalueerd. Als je logica nodig hebt om kort te sluiten, dan moet je geneste IIF() . gebruiken functies.



  1. Methode voor het trapsgewijs verwijderen van zachte verwijderingen in ouder-kindrelaties

  2. MySQL Temp-tabel Invoegen

  3. Converteer SQL Server DateTime-object naar BIGINT (.Net ticks)

  4. MySQL - Verwijzen naar geaggregeerde kolom in where-clausule