• Categoría: Oracle
  • Visto: 163696

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 
Oracle

La función DECODE compara expr con cada uno de valores de busqueda uno a uno. Si expr es igual a un valor de busqueda la base de datos Oracle devuelve el resultado correspondiente.

 

 

Sintaxis


DECODE(expr, busqueda, resultado [, busqueda, resultado ]...· [, defecto ])

 

Si no hay coincidencias en busqueda Oracle devuelve el valor por defecto. Si el valor por defecto se omite, Oracle devuelve un valor null. Los argumentos pueden ser cualquiera de los tipos de datos numéricos (NUMBER, BINARY_FLOAT, or BINARY_DOUBLE) o tipos de datos de caracteres. 

La función DECODE() se puede utilizar tanto en Oracle 10g como en Oracle 11g.

 

Si expr y busqueda son datos de tipo caracter, Oracle los compara semánticamente sin rellenar. expr, busquedaresultado puede ser cualquiera de los tipos de datos CHAR, VARCHAR2, NCHAR o NVARCHAR2. La cadena devuelta es de tipo de dato VARCHAR2 y se encuentra en el mismo juego de caracteres del parámetro del primer resultado.

 

Si el primer par de busqueda-resultado es numérico, entonces Oracle compara todas las expresiones busqueda-resultado y la primera expr determina el argumento con la mayor prioridad numérica, convierte implícitamente el resto de argumentos ese tipo de datos, y devuelve ese tipo de datos.

 

La busqueda, resultado, y defecto pueden ser derivados desde una expresión. La base de datos Oracle utiliza la evaluación de cortocircuito. La base de datos evalúa cada valor de busqueda sólo antes de comparar con expr, en lugar de evaluar todos los valores de busqueda antes de comparar cualquiera de ellos con expr, entonces, Oracle nunca evalúa una busqueda si una busqueda anterior es igual a expr.

 

Oracle convierte automáticamente expr y cada valor de busqueda a el valor del tipo de datos de primera busqueda antes de comparar. Oracle convierte automáticamente el valor de retorno al mismo tipo de datos del primer resultado. Si el primer resultado tiene el tipo de dato CHAR o si el primer resultado es nulo, Oracle convierte el valor de retorno al tipo de datos VARCHAR2.

 

En una función DECODE, Oracle considera que dos nulls son equivalentes. Si expr es null, Oracle devuelve el resultado de la primera busqueda que es también null. El número máximo de componentes en la función DECODE, incluyendo expr, busqueda, resultado y defecto, es de 255.

  

EJEMPLO:


SELECT Numfactura,
DECODE (CodPais,
1, 'ECUADOR',
2, 'VENEZUELA',
3, 'ARGENTINA',
4, 'ESPAÑA',
5, 'PORTUGAL',
6, 'MEXICO',
'Desconocido') "Pais", Importe
FROM Facturas
WHERE Importe > 100
ORDER BY "Pais", NumFactura;

numfac     Pais                             Importe
---------- -------------------------------- ----------
3          ARGENTINA                        239
10         ARGENTINA                        216
14         Desconocido                      1235
1          ECUADOR                          610
8          ECUADOR                          1626
4          ESPAÑA                           2257
11         ESPAÑA                           2806
6          MEXICO                           101
14         MEXICO                           141
5          PORTUGAL                         156
13         PORTUGAL                         96

11 rows selected.