Está en la página 1de 33

Uso de las funciones de conversión y

Expresiones condicionales
Objetivos

Al finalizar esta lección, debería ser capaz de hacer lo


siguiente:
• Describir los diferentes tipos de funciones de
conversión que están disponibles en SQL
• Utilizar las funciones de conversión TO_CHAR,
TO_NUMBER y TO_DATE
• Aplicar las expresiones condicionales en una sentencia
SELECT
Agenda

• Conversión de tipo de datos implícito y explícito


• Funciones TO_CHAR, TO_DATE y TO_NUMBER
• Funciones generales:
– NVL
– NVL2
– NULLIF
– COALESCE
• Expresiones condicionales:
– CASE
– DECODE
Funciones de conversión

Tipo de datos
conversión

Conversión implícita Conversión Explícita


de tipos de datos de tipos de datos
Conversión de datos de tipo
Implícita
En las expresiones, Oracle Server puede convertir
automáticamente lo siguiente:

DE A
VARCHAR2 o CHAR NUMERO
VARCHAR2 o CHAR FECHA
Conversión de datos de tipo
Implícita
Para la evaluación de expresiones, Oracle Server puede
convertir automáticamente lo siguiente:

DE A
NUMERO VARCHAR2 o CHAR

FECHA VARCHAR2 o CHAR


Conversión de datos de tipo
explícita

TO_NUMBER TO_DATE

NUMERO CARACTER FECHA

TO_CHAR TO_CHAR
Agenda

• Conversión de tipo de datos implícito y explícito


• Funciones TO_CHAR, TO_DATE y TO_NUMBER
• Funciones generales:
– NVL
– NVL2
– NULLIF
– COALESCE
• Expresiones condicionales:
– CASE
– DECODE
Uso de la función TO_CHAR con fechas

TO_CHAR(fecha[,'modelo_formato'])

El modelo de formato:
• Debe estar encerrado entre comillas simples
• Distingue entre mayúsculas y minúsculas
• Puede incluir cualquier elemento de formato de fecha
válido
• Tiene un elemento fm para eliminar espacios en blanco
rellenados o suprimir ceros a la izquierda
• Se separa de el valor de fecha por una coma
Elementos del Formato Modelo de Fecha

Elemento Resultado
YYYY Año completo en números
YEAR Año enunciados (en Inglés)
MM Valor de dos dígitos para el mes
MONTH Nombre completo del mes

MON Tres letras de la abreviatura del mes


DY Abreviacion de tres letras del día de la semana
DAY Nombre completo del día de la semana
DD Numéro de Día del mes
Elementos del formato modelo de fecha

• Elementos de tiempo formato a la parte de hora del día:


HH24:MI:SS AM 15:45:32 PM

• Añadir cadenas de caracteres encerrándolos entre


comillas dobles:
DD "of" MONTH 12 of OCTOBER

• Para los sufijos de número precisar números:


ddspth fourteenth
Uso de la función TO_CHAR con fechas

SELECT last_name,
TO_CHAR(hire_date, 'fmDD Month YYYY')
AS HIREDATE
FROM employees;


Uso de la función TO_CHAR con Números

TO_CHAR(numero[, 'modelo_formato'])

Estos son algunos de los elementos de formato que se pueden


utilizar con la función TO_CHAR para mostrar un valor
numérico como un carácter:
Elemento Resultado
9 Representa un número
0 Obliga a un cero para que se muestre
$ Coloca un signo de dólar a un flotante
L Utilización del símbolo de la moneda local
. Imprime un punto decimal
, Imprime una coma como indicador de miles
Uso de la función TO_CHAR con Números

SELECT TO_CHAR(salary, '$99,999.00') SALARY


FROM empleados
WHERE apellido = 'Ernst';
Uso de las funciones TO_NUMBER y TO_DATE

• Convertir una cadena de caracteres en un formato de


número con la función TO_NUMBER:

TO_NUMBER(char[, 'modelo_formato'])

• Convertir una cadena de caracteres en un formato de


fecha mediante la función TO_DATE:

TO_DATE(char[, 'modelo_formato'])

• Estas funciones tienen un modificador de fx. Este


modificador especifica la coincidencia exacta para el
argumento de carácter y el modelo de formato de fecha de
una función TO_DATE.
Utilizando funciones TO_CHAR y TO_DATE con el
formato de fecha RR.
Encontrar a los empleados que fueron contratados antes de
1990, use el formato RR de fecha, el cual produce el mismo
resultado, el formato RR interpreta la parte de año de la fecha
de 1950 a 1999:
SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')
FROM employees
WHERE hire_date < TO_DATE('01-Jan-90','DD-Mon-RR');
Agenda

• Conversión de tipo de datos implícito y explícito


• Funciones TO_CHAR, TO_DATE y TO_NUMBER
• Funciones generales:
– NVL
– NVL2
– NULLIF
– COALESCE
• Expresiones condicionales:
– CASE
– DECODE
Funciones generales

Las siguientes funciones funcionan con cualquier tipo de datos


y se refieren a la utilización de los nulos:
• NVL (expr1, expr2)
• NVL2 (expr1, expr2, expr3)
• NULLIF (expr1, expr2)
• COALESCE (expr1, expr2, ..., expr
Función NVL

Convierte un valor nulo a un valor real:


• Los tipos de datos que se pueden utilizar son la fecha,
carácter, y el número.
• Los tipos de datos deben coincidir:
– NVL (COMMISSION_PCT, 0)
– NVL (fecha_actual, '01-JAN-97 ')
– NVL (trabajo_id, 'No trabaja todavía')
Uso de la función NVL

SELECT last_name, salary, NVL(commission_pct, 0), 1


(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL 2
FROM employees;


1 2
Uso de la función NVL2

SELECT last_name, salary, commission_pct, 1


NVL2(commission_pct,
'SAL+COMM', 'SAL') income 2
FROM employees WHERE department_id IN (50, 80);

1 2
Uso de la función NULLIF

SELECT first_name, LENGTH(first_name) "expr1",


last_name, LENGTH(last_name) "expr2", 2
NULLIF(LENGTH(first_name), LENGTH(last_name)) result 3
FROM employees;


1 2 3
Uso de la función COALESCE

• La ventaja de la función COALESCE sobre la función NVL


es que la función COALESCE puede tomar varios valores
alternativos.
• Si la primera expresión no es nulo, la función COALESCE
devuelve esa expresión; de lo contrario, hace un
COALESCE de las expresiones restantes.
Uso de la función COALESCE

SELECT last_name, employee_id,


COALESCE(TO_CHAR(commission_pct),TO_CHAR(manager_id),
'No commission and no manager')
FROM employees;


Agenda

• Conversión de tipo de datos implícito y explícito


• Funciones TO_CHAR, TO_DATE y TO_NUMBER
• Funciones generales:
– NVL
– NVL2
– NULLIF
– COALESCE
• Expresiones condicionales:
– CASE
– DECODE
Expresiones condicionales

Para proporcionar el uso de la lógica IF-THEN-ELSE dentro


de una sentencia SQL. Utilice dos métodos:
– La expresión CASE
– La función DECODE
Expresión CASE

Facilita las consultas condicionales haciendo el trabajo de una


instrucción IF-THEN-ELSE:

CASE expr WHEN comparison_expr1 THEN return_expr1


[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
El uso de la expresión CASE
Facilita las consultas condicionales haciendo el trabajo de una
instrucción IF-THEN-ELSE:
SELECT last_name, job_id, salary,
CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary END "REVISED_SALARY"
FROM employees;


Función DECODE

Facilita las consultas condicionales para realizar el trabajo de


una expresión CASE o una instrucción IF-THEN-ELSE:

DECODE(col|expression, search1, result1


[, search2, result2,...,]
[, default])
Uso de la función DECODE
SELECT last_name, job_id, salary,
DECODE(job_id, 'IT_PROG', 1.10*salary,
'ST_CLERK', 1.15*salary,
'SA_REP', 1.20*salary,
salary)
REVISED_SALARY
FROM employees;


Uso de la función DECODE

Muestra la tasa de impuestos aplicable a cada empleado del


departamento 80:
SELECT last_name, salary,
DECODE (TRUNC(salary/2000, 0),
0, 0.00,
1, 0.09,
2, 0.20,
3, 0.30,
4, 0.40,
5, 0.42,
6, 0.44,
0.45) TAX_RATE
FROM employees
WHERE department_id = 80;
Examen

La función TO_NUMBER convierte ya sea cadenas de


caracteres o valores de fecha a un número en el formato
especificado por el modelo de formato opcional.
a. Verdadero
b. Falso
Resumen

En esta lección, debe haber aprendido a:


• Modificar formatos de fecha para la visualización
usando funciones
• Convertir tipos de datos de columna utilizando
funciones
• Utilizar funciones NVL
• Usar la lógica IF-THEN-ELSE y otras expresiones
condicionales en una sentencia SELECT

También podría gustarte