sql >> Base de Datos >  >> RDS >> Oracle

Access/jet equivalente a la decodificación de Oracle

La analogía más cercana es SWITCH() función, por ej.

Oráculo:

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

Motor de base de datos de acceso

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

Tenga en cuenta que con SWITCH() tiene que proporcionar el predicado completo cada vez, por lo que no está restringido a usar solo id_proveedor. Para el valor predeterminado, use un predicado que sea obvio para el lector humano que es VERDADERO, p. 1 = 1 o simplemente TRUE :)

Algo que puede no ser obvio es que la lógica en SWITCH() la función no se cortocircuita, lo que significa que cada expresión de la función debe poder evaluarse sin errores. Si necesita lógica para cortocircuitar, deberá usar IIF() anidado funciones.