DP 5 1 Esp Merged
DP 5 1 Esp Merged
DP 5 1 Esp Merged
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados.
Objetivos
En esta lección se abordan los siguientes objetivos:
• Proporcionar un ejemplo de conversión de tipo de
dato implícita y explícita y una conversión de tipo de
dato implícita
• Explicar el motivo de la importancia, desde una
perspectiva de negocio, de que un lenguaje
tenga capacidades de conversión de datos
incorporadas
• Crear una consulta SQL que aplique correctamente
las funciones de una sola fila TO_CHAR, TO_NUMBER
y TO_DATE para obtener el resultado deseado
Objetivos DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 3
Objetivos
En esta lección se abordan los siguientes objetivos:
• Aplicar el modelo de formato de fecha y/o
caracteres adecuado para producir una salida
deseada
• Explicar y aplicar el uso de YY y RR para devolver el
año correcto como se almacenó en la base de datos
Objetivos
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 4
Objetiv
• Imagine que tuviera que leer todos los libros de texto
en archivos de texto sin párrafos y sin mayúsculas.
• Sería difícil leerlos.
• Afortunadamente, existen programas de software
disponibles que permiten poner en mayúsculas y aplicar
color al texto, subrayarlos, ponerlos en negrita, centrarlo y
agregar gráficos.
• En el caso de bases de datos, los cambios de formato y
visualización se realizan utilizando funciones de
conversión.
• Estas funciones permiten mostrar los números en la
moneda local, aplicar una gran variedad de formatos a las
fechas, mostrar la hora incluyendo hasta los segundos y
hacer un seguimiento del siglo al que hace referencia una
Objetiv
fecha.
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 5
Tipos de
• Cuando se crea una tabla para una base de datos,
el programador SQL debe definir qué tipo de dato
se almacenará en cada uno de los campos de la
tabla.
• En SQL, hay diferentes tipos de dato. Estos tipos de
dato definen el dominio de valores que puede incluir
cada columna.
• Para esta lección, utilizará:
– VARCHAR2
– CHAR
– NUMBER
– DATE
Presenter
2019-07-06 20:55:16
--------------------------------------------
En la mayoría de los lenguajes de
programación se necesita que el programador
Tipos de
declare el tipo de dato de cada objeto de
datos. Para los datos almacenados en una
base de datos, el programador SQL
DPS5L1 define un tipo de dato para todas las
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales.columnas
Todos los derechos reservados.
de la base 6
de datos. Los tipos
de dato se tratarán con mayor detalle más
adelante en el curso, pero por ahora
Descripción de Tipos de
• VARCHAR2: se utiliza para datos de caracteres de
longitud variable, incluidos los números, los guiones
y los caracteres especiales.
• CHAR: se utiliza para datos de texto y de caracteres
de longitud fija, incluidos los números, los guiones y
los caracteres especiales.
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 7
Descripción de Tipos de
• NUMBER: se utiliza para almacenar datos numéricos de
longitud variable. No se permiten guiones, texto u
otros datos no numéricos. La moneda se almacena
como tipo de dato numérico.
• DATE: se utiliza para valores de fecha y hora.
Internamente, Oracle almacena las fechas como
números y, por defecto, se muestra información de
DATE como DD-Mes-YYYY (por ejemplo, 23-Oct-
2013).
DPS5L1
Funciones de Conversión
Descripción de Tipos de
Conversión de
• Oracle Server puede convertir automáticamente
datos VARCHAR2 y CHAR en tipos de dato NUMBER y
DATE.
• Puede convertir datos de tipo NUMBER y DATE
de nuevo en un tipo de dato CHARACTER.
• A esto se le conoce como Conversión
conversión de datos del Tipo de
implícita
Conversión de Conversión de
DPS5L1 Tipo de Dato Tipo de Dato
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 9
Funciones de Conversión
Presenter
2019-07-06 20:55:16
--------------------------------------------
Explícito: claramente formulado o
definido.
Conversión de
• Aunque esto es una característica útil, siempre es
mejor realizar conversiones de tipo de dato explícitas
para garantizar la fiabilidad en las sentencias SQL.
DPS5L1
Conversión de
Funciones de Conversión
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 10
Conversión de
• Las cuatro funciones de conversión de tipos de dato
que aprenderá son:
– Convertir un tipo de dato de fecha en tipo de dato de carácter
– Convertir un tipo de dato numérico en tipo de dato de carácter
TO_CHAR TO_CHAR
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 11
Conversión de Tipo
• Las cuatro funciones de conversión de tipos de dato
que aprenderá son:
– Convertir un tipo de dato de caracteres en tipo de
dato numérico
– Convertir un tipo de dato de caracteres en tipos de dato de
fecha CONVERSIÓN DE TIPO DE DATO EXPLÍCITA
TO_NUMBER TO_DATE
TO_CHAR TO_CHAR
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 12
Conversión de Datos de
Fecha en Datos de
• Por lo general, es aconsejable que un formato de fecha
se convierta de su formato DD-Mes-YYYY por defecto
en otro formato especificado por el usuario.
• La función que permite llevar esto a cabo es:
• ElTO_CHAR
'modelo decolumn
(date formato'
name,debe estar
'format entre
model you specify')
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 13
Conversión de Datos de
Fecha en Datos de
• Se puede incluir cualquier elemento de formato
de fecha válido.
• Utilice sp para deletrear un número.
• Utilice th para que el número aparezca como un
ordinal. (1º, 2º, 3º y así sucesivamente)
• Utilice un elemento fm para eliminar los espacios
en blanco o eliminar los ceros iniciales de la salida.
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 14
Conversión de Datos de
Fecha en Datos de
• Las tablas muestran YYYY Año completo en números
los diferentes modelos YEAR Año en letra
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 15
Presenter
2019-07-06 20:55:17
Conversión de Datos de
--------------------------------------------
En el ejemplo 2 se utiliza "fm" para suprimir
los ceros iniciales de la fecha.
Fecha en Datos de
En el ejemplo 3 se agrega "th", etc. para
que el día aparezca como un número
ordinal
Caracteres
• Ejemplos de salida con diferentes modelos
Ejemplos: Salida
SELECT TO_CHAR(hire_date, 'Month dd, YYYY') martes, 07 de
FROM employees; junio de 1994
SELECT TO_CHAR(hire_date, 'fmMonth dd, YYYY') martes, 07 de
FROM employees; junio de 1994
SELECT TO_CHAR(hire_date, 'fmMonth ddth, 7 de junio de
YYYY') 1994
FROM employees;
3 de enero de
1990
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 16
Presenter
2019-07-06 20:55:17
Conversión de Datos de
--------------------------------------------
En el ejemplo 2 se agrega "SP" al formato
de día para especificar la parte de día de la
Fecha en Datos de
fecha.
En el ejemplo 3 se muestra el año deletread
y el texto "de" entre el día y el mes.
Caracteres
Tenga en cuenta que las comillas dobles
son necesarias alrededor del literal de
texto que se va a incluir.
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 17
Conversión de Datos de
Fecha en Datos de
Caracteres
• Ejemplos de salida con diferentes modelos
para el tiempo:
Ejemplos: Salida
SELECT TO_CHAR(SYSDATE, 'hh:mm') 2:07 AM
FROM dual;
SELECT TO_CHAR(SYSDATE, 'hh:mm pm') 2:07 AM
FROM dual;
SELECT TO_CHAR(SYSDATE, 'hh:mm:ss pm') 2:07:23 AM
FROM dual;
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 18
Conversión de Datos Numéricos
en Datos de Caracteres
• Los números almacenados en la base de datos
no tienen formato.
• Esto significa que no tienen ningún signo/símbolo
de moneda, comas, decimales, ni ningún otro
formato.
• Para agregar formato, en primer lugar debe convertir
el número en un formato de caracteres.
• LaTO_CHAR(number,
función SQL'format
que semodel')
utiliza para convertir un
número en un formato de carácter deseado es:
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 19
Presenter
2019-07-06 20:55:18
en Datos de Caracteres
dígitos en el número, se
muestra #####, por ejemplo, SELECT
TO_CHAR(24000, '$9,999') devolvería
#######, ya que el modelo de formato
tiene cuatro "9", pero el número
los elementos de
9 Posición numérica (la cantidad 999999 1234
de 9 determina el ancho de
la visualización)
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 20
Presenter
2019-07-06 20:55:18
en Datos de Caracteres
• ¿Puede identificar ELEMENT DESCRIPTION EXAMPLE RESULT
formato utilizados 0
la visualización)
Muestra los ceros iniciales 099999 001234
para generar la $
L
Signo de dólar flotante
Símbolo de divisa local flotante
999999 $
L999999
1234 $
FF1234
siguiente salida? . Punto decimal en la posición
especificada
999999,99 1234,00
– 9.000,00 EEEE
números negativos
Notación científica (debe tener 99.999EEEE 1,23E+03
– 0004422
cuatro EEEE)
V Multiplica por 10 n veces 9999V99 9999V99
(n = número de 9 después de V)
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 21
Conversión de Datos Numéricos
en Datos de Caracteres
• Respuestas:
SQL: Salida
SELECT TO_CHAR(3000, '$99999.99') 3000,00 $
FROM dual;
SELECT TO_CHAR(4500, '99,999') 4.500
FROM dual;
SELECT TO_CHAR(9000, '99,999.99') 9.000,00
FROM dual;
SELECT TO_CHAR(4422, '0,009,999') 0004422
FROM dual;
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 22
Conversión de Caracteres en
• Por lo general, es aconsejable convertir una cadena
de caracteres en un número. La función necesaria
para realizar esta conversión es:
TO_NUMBER(character string, 'format model')
DPS5L1
Conversión de Caracteres en
Funciones de Conversión
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 23
Presenter
2019-07-06 20:55:18
--------------------------------------------
Oracle Application Express devolverá un
error de Oracle (Número no válido) si el
Conversión de Caracteres en
modelo de formato no coincide con el
número devuelto por la base de datos.
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 25
Conversión de Caracteres en
• Cuando realiza una conversión de caracteres en
fecha, el modificador fx (formato exacto)
especifica la coincidencia exacta entre el
argumento de carácter y el modelo de formato de
fecha.
• En el siguiente ejemplo, tenga en cuenta que en
"May10 " no hay ningún espacio entre "May" y
"10".
• El modelo de formato fx busca la coincidencia con
el argumento de caracteres, ya que tampoco tiene
ningún espacio entre "Mon" y "DD".
SELECT TO_DATE('May10,1989', 'fxMonDD,YYYY') CONVERT
DPS5L1
AS Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 26
"Convert" 10-May-1989
Reglas del Modificador
• Las reglas del modificador fx son:
– La puntuación y el texto entre comillas en el argumento de
caracteres deben coincidir con las partes correspondientes del
modelo de formato exactamente (excepto en lo que respecta
a mayúsculas/minúsculas).
– El argumento de carácter no puede tener espacios
en blanco adicionales.
• Sin fx, Oracle Server ignora los espacios en blanco adicionales.
– Los datos numéricos del argumento de carácter deben tener
el mismo número de dígitos que el elemento correspondiente
en el modelo de formato.
• Sin fx, los números del argumento de carácter no pueden omitir
los ceros iniciales.
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 27
Reglas del Modificador
Examples: Output
SELECT TO_DATE('Sep 07, 1965', 'fxMon dd, YYYY') 07-Sep-1965
AS "Date"
FROM dual;
SELECT TO_DATE('July312004', 'fxMonthDDYYYY') 31-Jul-2004
AS "Date"
FROM DUAL;
SELECT TO_DATE('June 19, 1990','fxMonth dd, 19-Jun-1990
YYYY') AS "Date"
FROM DUAL;
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 28
Formato de Fecha RR y Formato de Fecha
• Todos los datos de fecha ahora se almacenan
utilizando años de cuatro dígitos (YYYY).
• No obstante, algunas bases de datos de legado
pueden seguir utilizando el formato de dos dígitos
(YY).
• No hace tanto tiempo que hemos cambiado de sigo,
de 1900 a 2000.
• Este cambio vino acompañado de una gran confusión
en función de si una fecha escrita como 02-Jan-98 se
interpretaría como 2 de enero de 1998 o 2 de enero
de 2098.
Formato de Fecha RR y Formato de Fecha
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 29
Formato de Fecha RR y Formato de Fecha
• Si los datos que se van a convertir de datos de
caracteres a datos de fecha solo contienen un año de
dos dígitos, Oracle tiene una forma de interpretar
estas fechas con el siglo correcto.
• Por ejemplo: '27-Oct-95'
Date
• El año de dos dígitos se interpreta
SELECT TO_DATE('27-Oct-95','DD/Mon/YY')
AS como 2095,
27-Oct-2095
que"Date"
puede que no sea lo previsto.
FROM
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 30
Formato de Fecha RR y Formato de Fecha
• Si YY se utiliza en el modelo de formato, se asume
que el año pertenece al siglo actual.
• Si el año de dos dígitos no está en el siglo
actual, utilizamos RR.
SELECT TO_DATE('27-Oct-95','DD-Mon-RR')
Date
• El año de dos dígitos ahora se interpreta
AS "Date" como 1995.
27-Oct-1995
FROM
dual;
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 31
Algunas Sencillas
• Si el formato de fecha se especifica con el formato RR,
el valor de retorno tiene dos posibilidades, en función
del año actual.
• Si el año actual está entre 00-49:
– Fechas a partir de 0- Si el año de dos dígitos
especificado es:
49: la fecha estará en 0-49 50-99
el siglo actual Si dos de 0-49 La fecha de La fecha de
los dígitos devolución devolución
– Fechas a partir de 50- del año está en el está en el
actual son: siglo actual siglo anterior
99: la fecha estará en el al actual
siglo pasado 50-99 La fecha de
devolución
La fecha de
devolución
está en está en el
el siglo siglo actual
posterior
al actual
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 32
Algunas Sencillas
• Si el año actual está entre 50-99:
– Fechas a partir de 0-49: la fecha estará en el siglo siguiente
– Fechas a partir de 50-99: la fecha estará en el siglo actual
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 33
Algunas Sencillas
• En la siguiente tabla se proporcionan algunos
ejemplos de cómo se interpretan YY y RR y,
en función del año actual.
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 34
Presenter
2019-07-06 20:55:20
--------------------------------------------
Esto se puede solucionar mediante la
sustitución de YY en el modelo de formato
Algunas Sencillas
con RR o mediante años de cuatro
dígitos , con YYYY.
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 35
Terminologí
Entre los términos clave utilizados en esta lección se
incluyen:
• CHAR
• DATE
• Formato de fecha DD
• Funciones de conversión
• fm
• NUMBER
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 36
Terminologí
Entre los términos clave utilizados en esta lección se
incluyen:
• Formato de fecha RR
• TO_CHAR
• TO_DATE
• TO_NUMBER
• VARCHAR2
• Modificador fx
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 37
Resume
En esta lección, debe haber aprendido lo siguiente:
• Proporcionar un ejemplo de conversión de tipo de
dato implícita y explícita y una conversión de tipo de
dato implícita
• Explicar el motivo de la importancia, desde una
perspectiva de negocio, de que un lenguaje
tenga capacidades de conversión de datos
incorporadas
• Crear una consulta SQL que aplique correctamente
las funciones de una sola fila TO_CHAR, TO_NUMBER
y TO_DATE para obtener el resultado deseado
Resume DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 38
Resume
En esta lección, debe haber aprendido lo siguiente:
• Aplicar el modelo de formato de fecha y/o
caracteres adecuado para producir una salida
deseada
• Explicar y aplicar el uso de YY y RR para devolver el
año correcto como se almacenó en la base de datos
Resume
DPS5L1
Funciones de Conversión Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 39
Programación de
Bases de Datos con SQL
5-2
Funciones NULL
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados.
Objetivo
En esta lección se abordan los siguientes objetivos:
• Mostrar y explicar la evaluación de una función anidada
• Enumerar al menos cuatro funciones generales
que funcionan con cualquier tipo de dato y están
relacionadas con el tratamiento de valores nulos
• Explicar el uso de las funciones COALESCE y NVL
• Explicar el uso de funciones generales para tratar
con valores nulos en los datos
• Crear y ejecutar una consulta SQL que aplica
correctamente las funciones NVL NVL2, NULLIF
y COALESCE de una sola fila
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 3
Objetiv
• Además de las funciones que controlan cómo se
formatean los datos o se convierten en otro tipo,
SQL utiliza un juego de funciones generales diseñado
específicamente para tratar valores nulos.
• Puede que se pregunte cómo un valor que no está
disponible, sin asignar, desconocido o no aplicable
pueda merecer tanta atención.
• Lo nulo puede ser "nada", pero puede afectar a la forma
en que las expresiones se evalúan, ¿cómo se calculan
las medias y dónde aparece un valor en una lista
ordenada.
• Esta lección trata sobre el manejo de valores nulos.
Presenter
2019-07-06 20:55:31
--------------------------------------------
Gran parte de la potencia de SQL se
dedica a emular las decisiones que tenemos
Objetiv
que tomar cada día. Necesitamos el
formato de fecha cambiado para cumplir
con el formato de escritura de otro
DPS5L2 país. Es necesario emitir cheques de
Funciones NULL Copyright © 2019, Oracle y/o sus filiales.nóminas
Todos losque
derechos reservados.
incluyan 4
signos de monedas
en lugar de solo números.
Método de Evaluación de las
• Hasta ahora, ha aplicado funciones de una sola fila
en sentencias simples.
• Sin embargo, es posible anidar funciones
a cualquier profundidad.
• Es importante saber cómo se evalúan las
funciones anidadas.
• "Anidación" hace referencia a una cosa que está
incluida en otra cosa (como un huevo dentro de un
nido).
• El siguiente ejemplo muestra una función anidada.
• El proceso de evaluación empieza desde el nivel
más profundo hasta el nivel menos profundo.
Método de Evaluación de las
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 5
Método de Evaluación de las
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 6
Presenter
2019-07-06 20:55:31
--------------------------------------------
Las funciones anidadas se evalúan a partir
de la función más profunda, continuando
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 9
Función
• La función NVL convierte un valor nulo en un
valor conocido de un tipo de dato fijo, ya sea de
fecha, carácter o numérico.
• Los tipos de dato de la columna de valor nulo y el
nuevo valor deben ser los mismos.
• La función NVL es:
• NVL
NVL (valor o columna
(expression que may
1 value that pueden contener
contain a null, un
expression 2 value to substitute for null)
valor nulo, el valor para sustituir un valor nulo)
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 10
Función
• En la siguiente consulta se utiliza la función NVL
con tipos de dato de carácter:
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 11
Presenter
2019-07-06 20:55:32
--------------------------------------------
Los valores NULL de las tablas se han
sustituido mediante la función NVL
Función
(resaltada en rojo).
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 12
Función
• Puede utilizar la función NVL para convertir los valores
de columna que contengan valores nulos en un
número antes de realizar los cálculos.
• Cuando se realiza un cálculo aritmético con un
valor nulo, el resultado es nulo.
• La función NVL puede convertir el valor null en
un número antes de que se realicen los cálculos
aritméticos para evitar un resultado nulo.
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 13
Función
• En el ejemplo, la columna commission_pct de la
tabla employees contiene valores nulos.
• La función NVL se utiliza para cambiar el valor nulo
a cero antes de los cálculos aritméticos.
SELECT last_name, NVL(commission_pct, 0)*250
AS "Commission"
FROM employees LAST_NAME Commission
WHERE department_id IN(80,90); Zlotkey 50
Abel 75
Taylor 50
King 0
Kochhar 0
De Haan 0
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 14
Presenter
2019-07-06 20:55:32
--------------------------------------------
LONG es un tipo de dato de caracteres de
longitud variable de hasta 2 GB de
Función
tamaño. Los tipos de dato se tratan más
detalladamente más adelante en el curso.
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 16
Presenter
2019-07-06 20:55:33
--------------------------------------------
NVL2 comprueba si la expresión 1
(commission_pct) tiene un valor. Si tiene un
Función
valor, se
devuelve la expresión 2 (salary + (salary
* commission_pct). Si la expresión 1 es
NULL, se devuelve la expresión
3 (salary).
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 17
Función
• La función NULLIF compara dos expresiones.
• Si son iguales, la función devuelve un valor nulo.
• Si no son iguales, la función devuelve la
primera expresión.
• La función NULLIF es:
NULLIF(expression 1, expression 2)
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 18
Presenter
2019-07-06 20:55:33
--------------------------------------------
A menudo se utilizan funciones
NULLIF después de realizar proyectos de
Función
migración de datos para probar si los
datos del sistema de destino son los
mismos que en los sistemas de origen
iniciales. Por lo tanto, se
utiliza NULLIF para buscar
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 19
Función
• La función COALESCE es una extensión de la función
NVL, excepto en que COALESCE puede tener varios
valores.
• La palabra "coalesce" significa literalmente "unir" y eso
es lo que ocurre.
• Si la primera expresión es nula, la función continúa
bajando por la línea hasta que se encuentra una expresión
no nula.
• Por supuesto, si la primera expresión tiene un valor,
la función devuelve la primera expresión y la función
se detiene.
• La función COALESCE es:
COALESCE (expression 1, expression 2, ...expression n)
Función DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 20
Función
• Examine la sentencia SELECT de la tabla
employees mostrada
a la derecha.
• Si un empleado tiene un valor (no NULL) para
commission_pct, este se devuelve; de lo contrario, si
el salario tiene un valor, se devuelve el salario.
• Si los valores commission_pct y salary de los empleados
son NULL, devuelve el número 10. LAST_NAME Comm
SELECT last_name, Grant 15
COALESCE(commission_pct, salary, Zlotkey 2
10) AS "Comm" DPS5L2
Taylor 2 los derechos reservados. 21
FROM employees Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 22
Resume
En esta lección, debe haber aprendido lo siguiente:
• Mostrar y explicar la evaluación de una función anidada
• Enumerar al menos cuatro funciones generales
que funcionan con cualquier tipo de dato y están
relacionadas con el tratamiento de valores nulos
• Explicar el uso de las funciones COALESCE y NVL
• Explicar el uso de funciones generales para tratar
con valores nulos en los datos
• Crear y ejecutar una consulta SQL que aplica
correctamente las funciones NVL NVL2, NULLIF
y COALESCE de una sola fila
DPS5L2
Funciones NULL Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 23
Programación de
Bases de Datos con SQL
5-3
Expresiones Condicionales
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados.
Objetivo
En esta lección se abordan los siguientes objetivos:
• Comparar y contrastar las funciones DECODE y CASE
• Crear y ejecutar una consulta SQL que
utiliza correctamente las funciones DECODE
y CASE
• Crear y ejecutar dos métodos para implantar la
lógica condicional IF-THEN-ELSE
Objetivo DPS5L3
Expresiones Condicionales Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 3
Objetiv
• Poder tomar decisiones es esencial en el modelado
de datos.
• Los modeladores tienen que decidir qué funciones
de negocio se deben modelar y cuáles no.
• En el proceso de modelado de datos es necesario que los
diseñadores analicen la información para identificar las
entidades, resolver las relaciones y seleccionar los
atributos.
• Una decisión típica podría ser:
– (IF) Si una empresa necesita realizar un seguimiento de los
datos a lo largo del tiempo, (THEN) En ese caso, el tiempo
puede que necesite ser una entidad o (ELSE) En caso contrario,
el tiempo debería ser un atributo.
Objetiv DPS5L3
Expresiones Condicionales Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 4
Método de Evaluación de las
• Este proceso de toma de decisiones en programación no
es muy diferente del proceso que se utiliza en la vida
diaria.
• Piense en la última vez que tuvo que tomar una
decisión del tipo if-then-else.
• Si (IF) termino mis deberes antes de las 9:00 p.m.,
puedo ver la televisión; en caso contrario (ELSE), no
puedo ver la televisión.
• En SQL, estos tipos de elecciones implican métodos
de procesamiento condicionales.
• Saber cómo utilizar el procesamiento condicional facilita
la toma de decisiones para obtener los datos que desee.
DPS5L3
Método de Evaluación de las
Expresiones Condicionales
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 5
Expresiones
• Las dos expresiones condicionales son CASE y DECODE.
• Ya ha estudiado NULLIF, que es el equivalente lógico a
la expresión CASE, ya que CASE compara dos
expresiones.
• NULIF compara dos expresiones y, si las dos
expresiones son iguales, devuelve null; si no son
iguales, devuelve la primera expresión.
Expresiones DPS5L3
Expresiones Condicionales Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 6
Presenter
2019-07-06 20:55:44
--------------------------------------------
Es importante que los alumnos también
aprendan sintaxis propiedad de Oracle, ya
Expresiones
que es posible que se encuentren con esta
sintaxis en bases de datos anteriores.
DPS5L3
Expresiones Condicionales Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 7
Expresiones
• CASE y DECODE son ejemplos de una de
estas diferencias.
• CASE es una sentencia compatible con ANSI/ISO 99
SQL 99.
• DECODE es una sentencia propiedad de Oracle.
• Ambas sentencias devuelven la misma
información utilizando sintaxis diferente.
DPS5L3
Expresiones Condicionales Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 8
Expresión
• La expresión CASE básicamente realiza la función de
una sentencia IF-THEN-ELSE.
• Los tipos de dato de las expresiones CASE, WHEN y
ELSE deben ser iguales.
• La sintaxis de una expresión CASE es:
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
DPS5L3
Expresiones Condicionales Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 9
Presenter
2019-07-06 20:55:45
--------------------------------------------
Sintaxis de
• La consulta comprueba el LAST_NAME Department
valor department_id. King
Kochhar
Management
Management
De Haan Management
– Si (IF) es 90, (then) Whalen Other dept.
devuelve 'Management' Higgins
Gietz
Other dept.
Other dept.
– Si (IF) es 80, (then) devuelve 'Sales' Zlotkey
Abel
Sales
Sales
– Si (IF) es 60, (then) devuelve 'It' Taylor
Grant
Sales
Other dept.
Mourgos Other dept.
– En caso contrario (ELSE), Rajs Other dept.
devuelve 'Other dept.' Davies
Matos
Other dept.
Other dept.
SELECT last_name, Vargas Other dept.
CASE department_idDPS5L3 Hunold It
WHEN 90 THEN Expresiones Condicionales Copyright © 2019, Ernst
Oracle y/o sus filiales. Todos losIt
derechos reservados. 10
'Management' WHEN 80
THEN 'Sales' WHEN 60 Lorentz It
THEN 'It' Hartstein Other dept.
ELSE 'Other Fay Otro depart.
dept.' END AS
Expresión
• La función DECODE evalúa una expresión de una
forma similar a la lógica IF-THEN-ELSE.
• DECODE compara una expresión con cada uno de
los valores de búsqueda.
• La sintaxis de DECODE es:
DPS5L3
Expresiones Condicionales Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 13
Resume
En esta lección, debe haber aprendido lo siguiente:
• Comparar y contrastar las funciones DECODE y CASE
• Crear y ejecutar una consulta SQL que
utiliza correctamente las funciones DECODE
y CASE
• Crear y ejecutar dos métodos para implantar la
lógica condicional IF-THEN-ELSE
Resume DPS5L3
Expresiones Condicionales Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 14