Oracle
 sql >> Database >  >> RDS >> Oracle

Access/jet equivalente della decodifica di Oracle

L'analogia più vicina è SWITCH() funzione ad es.

Oracolo:

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

Accedi al Motore di database

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

Nota che con SWITCH() funzione devi fornire il predicato completo ogni volta, quindi non sei limitato a usare solo supplier_id. Per il valore predefinito, utilizzare un predicato che sia ovvio al lettore umano che è VERO, ad es. 1 = 1 o semplicemente TRUE :)

Qualcosa che potrebbe non essere ovvio è che la logica in SWITCH() la funzione non va in cortocircuito, il che significa che ogni espressione nella funzione deve poter essere valutata senza errori. Se hai bisogno della logica per cortocircuitare, dovrai usare IIF() annidato funzioni.