0% encontró este documento útil (0 votos)
23 vistas28 páginas

ME - 4 Consulta de Datos

Este documento explica diferentes funciones SQL para realizar conversiones de tipos de datos como TO_CHAR, TO_NUMBER y TO_DATE, así como funciones generales como NVL, NVL2, NULLIF y COALESCE.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
23 vistas28 páginas

ME - 4 Consulta de Datos

Este documento explica diferentes funciones SQL para realizar conversiones de tipos de datos como TO_CHAR, TO_NUMBER y TO_DATE, así como funciones generales como NVL, NVL2, NULLIF y COALESCE.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 28

CONSULTA DE DATOS

UNIDAD Nº II
Utilización De Funciones En Consultas SQL

www.iplacex.cl
SEMANA 4

Desarrollo
Organizando la idea

Bienvenidos a la cuarta semana de consulta de datos, hoy vamos aprender aplicar funciones en
Mi Base de datos.

¿Qué es una conversión?

Es la transformación o cambio de una cosa en otra distinta. Transformación de alguien o de


algo en cierta cosa que antes no era.

¿Existe otra forma de conversión?

En algunos casos, el servidor Oracle usa tipos de datos distintos a los que se requieren. Cuando
esto sucede, se debe convertir al tipo de datos que se requiere.
La conversión de un tipo de dato a otro puede ser efectuada en forma implícita o automática por
el servidor Oracle o en forma explícita por el usuario usando funciones de conversión.

• Conversión de tipos de datos implícitos: es un tipo de datos que puede ser efectuada
en forma implícita o automática por el servidor Oracle.

• Conversión de tipo de datos explícitas: es un tipo de datos que puede ser efectuada en
forma explícita por el usuario usando funciones de conversión.

2 www.iplacex.cl
Conversión de tipos de datos implícita
La asignación de valores tiene éxito si el servidor Oracle puede convertir el tipo de dato
del valor usado en el tipo de dato que se encuentra almacenado.

Para asignaciones, el servidor Oracle puede convertir automáticamente siempre que el


valor a convertir tenga un formato válido al tipo de dato en el que se convertirá.

Ejemplo: En la expresión hire_date > '05/03/2008' el string es convertido


implícitamente a fecha al momento de comparar.

3 www.iplacex.cl
Conversión de tipo de datos Explicita

Oracle trabaja con tres funciones para convertir en forma explícita que son:

TO_CHAR: Obtiene un texto a partir en un número o fecha. Opcional se puede


dar un formato específico de conversión.

TO_NUMBER: Convierte textos en números, indicándole si se desea dar el


formato de salida.

TO_DATE: Convierte textos en fechas, indicándoles si se desea el formato de


salida.

4 www.iplacex.cl
Conversión de tipo de datos Explicita

Estas asignaciones permiten que el servidor Oracle pueda convertir automáticamente


siempre que el valor a convertir tenga un formato válido al tipo de datos en el que se
convertir.

TO_CHAR:

La función TO_CHAR puede convertir la fecha desde su formato por defecto


especificado por el usuario.

El formato de conversión debe tener:

▪ Debe ir entre comillas simples.

▪ Puede incluir cualquier elemento de formato de fecha válido.

▪ Debe ir separado del valor fecha por una coma.

Uso de TO_CHAR con fechas

Los principales elementos de formatos de fechas válidos son:

• YYYY: año en formato de 4 dígitos.

• YEAR: año en palabras.

• MM: mes en formato de 2 dígitos.

5 www.iplacex.cl
• MONTH: nombre completo del mes.

• MON: las tres primeras letras del mes.

• DY: día de la semana abreviado en tres letras.

• DAY: día completo de la semana en palabras.

• DD: día del mes en formato de dos dígitos.

Los principales elementos de horas válidos para los formatos de fechas son:

• AM o PM: indicador de meridiano.

• HH: hora del día

• HH12: hora del día 1 a 12

• HH24: hora del día de 0 a 23

• MI: minutos (0-59).

• SS: segundos (0-59).

• / . , : separadores que se ven reflejados en el formato final de la fecha.

• "caracteres_a_visualizar“ : cadena de caracteres a visualizar en el formato final


de la fecha.

6 www.iplacex.cl
Ejemplo: El primer formato de fecha de contrato se muestra en número (año en 4
dígitos) y separado por /. El segundo formato muestra el día y año de contrato en
número y el mes en palabras. El tercer formato muestra la fecha y hora del sistema
incorporando las palabras de y del (la sentencia fue ejecutada el 09 de Enero del 2014
a las 16:04).

Uso de TO_CHAR con números

Cuando se desean trabajar los valores numéricos como una cadena de caracteres se
deben convertir esos números a un tipo de dato caracter utilizando la función
TO_CHAR. Esta función convierte un dato de tipo NUMBER a un dato de tipo
VARCHAR2.

El formato de conversión:

• Debe ir entre comillas simples.

• Puede incluir cualquier elemento de formato de número válido.

• Debe ir separado del valor número por una coma:

7 www.iplacex.cl
Otros elementos de formatos de números válidos:

• G: devuelve el separador de grupo en la posición especificada.

Ejemplo: 9G999 Resultado: 1.234

• D: devuelve el carácter decimal en la posición especificada (defecto es punto).

Ejemplo: 9999D99 Resultado: 1234,00

• V: multiplica por 10 n veces (n = número de 9s después V).

Ejemplo: 99999V9999 Resultado: 12340000

Ejemplo: Se muestra el salario del empleado Ernest en 4 formatos diferentes. En el


formato1 se muestra separado por miles y decimales (en una BD Oracle la coma es el
separador de miles y punto de decimales). En el formato2 se antepondrán ceros hasta
completar 4 caracteres antes del separador de miles, en el formato3 se mostrará un
punto como separador de miles y una coma para los decimales y en formato4 dado que
la cantidad de ceros después de V son tres, se muestra el valor del salario multiplicado
por 1000.

8 www.iplacex.cl
TO_NUMBER:

Entrega un número formateado desde una cadena de caracteres, usando un formato


determinado.

Convierte cadenas de texto en valores numéricos al importar datos a una tabla desde
otra fuente en formato de texto; por ejemplo, la consulta mostrada a continuación usa la
función TO_NUMBER para convertir texto formateado a valores numéricas predefinidas
en Oracle usando mascarillas determinadas de formato.

TO_DATE:

Entrega un valor de fecha usando una cadena de caracteres y una máscara de formato
de fechas; también se usa para convertir una fecha de un formato a otro.

9 www.iplacex.cl
¿Qué son las funciones Generales?

Las funciones generales trabajan con cualquier tipo de datos y permiten definir valores
a utilizar en el caso de que las expresiones tomen un valor nulo.

❖ NVL.

❖ NVL2.

❖ NULLIF.

❖ COALESCE.

• NVL: Si el valor de expr1 es NULO , devuelve el valor de expr2. Si no es NULO


retorna el valor de expr1.

• NVL2: Devuelve el valor de expr2 si el valor de expr1 no es NULO. Si expr1 es


NULO devuelve el valor de expr3.

• NULLIF: devuelve NULO si expr1 y expr2 son iguales. Si no lo son devuelve el


valor de expr1.

• COALESCE: retorna el valor de expr1 si no es NULO. Si es NULO devuelve el


valor de expr2 si no es NULO. Si los valores de expr1 y expr2 son NULOS
devuelve el valor de expr3 sino es NULO y así sucesivamente.

10 www.iplacex.cl
Trabajando con la función NVL

La forma de trabajar es: Si la expresión 1 es nulo, se devolverá el valor de la expresión


2. Si no es nulo retornará el valor de la expresión.

Los tipos de datos puede ser; fecha, carácter y número.

Ejemplo: En la sentencia del ejemplo, la primera y segunda función NVL retornan un


cero cuando el porcentaje de comisión del empleado sea nulo. La última función NVL
retorna el string No posee Jefe cuando la identificación del jefe sea nula. debido a que
se retorna un string el valor de la columna a validar se debe convertir a un string
usando la función TO_CHAR(manager_id).

11 www.iplacex.cl
Trabajando con la función NVL2

La forma de trabajar es: si la función evalúa la primera expresión 1. Si no es nula la


función NVL2 retorna la segunda expresión. Si la primera expresión es nula entonces la
función retornara la tercera expresión.

Los tipos de datos del valor que retorna la función es siempre el mismo tipo de datos de
las otras expresiones.

Ejemplo: La función NVL2 mostrará el string SALARIO+COMISION si el porcentaje de


comisión no es nulo. Si el porcentaje de comisión es nulo mostrará el string SOLO
SALARIO para los empleados con identificación 100, 101, 114, 147,148 o 149.

12 www.iplacex.cl
Trabajando con la función NULLIF

La forma de trabajar es: Si son iguales la expresión 1 y la expresión 2 retornará el valor


NULO.

Si no son iguales las expresiones, la función retornará la expresión 1

Ejemplo: Las funciones LENGTH retornas el total de caracteres del nombre y apellido
del empleado respectivamente. Si el total de caracteres del nombre y apellido del
empleado son iguales la función NULLIF mostrará NULO y si son diferentes mostrará el
total de caracteres del nombre. La información se muestra para los empleados con
identificación 100, 104, 106 o 110.

13 www.iplacex.cl
Trabajando con la función COALESCE

La función COALESCE retorna la primera expresión NO NULA de la lista. Todas las


expresiones deben tener el mismo tipo de dato.

Ejemplo: la función COALESCE mostrará el valor del porcentaje de comisión si no es


nulo, de lo contrario mostrará el valor de la identificación del jefe si no es nulo y si
ambos valores son nulos mostrará 9999 para los empleados que trabajan en el
departamento 10, 20 o 90.

14 www.iplacex.cl
Expresiones Condicionales

Existe dos métodos que se pueden utilizar para implementar el procesamiento


condicional de lógica IF-THEN-ELSE en una sentencia SQL.

• Una de ellas es la expresión CASE que cumple con ANSI SQL.

• El segundo método es la función DECODE que es específica de Oracle.

15 www.iplacex.cl
Trabajando con el uso de la expresión CASE.

Facilita las consultas condicionales realizando el trabajo de una sentencia IF-THEN-


ELSE en sentencias SQL. Evalúa una lista de condiciones y devuelve una de las
expresiones de resultado.

En una expresión CASE simple, el servidor Oracle busca el primer par WHEN ….
THEN para el cual expr sea igual a expr_comparación y retorna la expr_resultado.

Si en ningún par WHEN …. THEN se encuentra la condición y si existe una cláusula


ELSE, entonces el servidor Oracle retorna la expr_else. Si no existe la cláusula ELSE
el servidor Oracle retorna NULL (Nulo).

No se puede especificar el literal NULL para las expr_resultado y para expr_else.

Ejemplo: En la expresión CASE de la sentencia del ejemplo, el valor de la columna


job_id es la condición de búsqueda. Si el trabajo del empleado es PR_REP el salario se
mostrará incrementado en 15%, si es MK_MAN el salario se mostrará incrementado en
20% y para el resto de los trabajos no se incrementa el salario mostrándose sólo el
salario actual. La información de muestra para los empleados que trabajan en el
departamento 20, 70 0 90.

16 www.iplacex.cl
Ejemplo: En este ejemplo, CASE efectúa una búsqueda de alguna expresión válida
para mostrar un mensaje según el salario que posean los empleados que trabajan en el
departamento 60 o 90. Si el empleado posee un salario de hasta 5000 se mostrará el
mensaje Bajo, si posee un salario entre 5001 y 10000 mostrará el mensaje Medio, si
posee un salario entre 10001 y 20000 mostrará el mensaje Bueno y si posee un salario
mayor a 20000 mostrará el mensaje Excelente.

17 www.iplacex.cl
Trabajando con el uso de la expresión DECODE

La función DECODE traduce o descifra una expresión o columna y después compara


éste con cada valor de búsqueda. Si ambas son iguales retorna el resultado asociado a
esa búsqueda.

Si el valor por defecto es omitido y la expresión no coincide con ningún valor de


búsqueda , la función retorna NULL (Nulo). Si existe el defecto entonces la función
retorna este valor.

Ejemplo: El valor de la columna job_id es la condición de búsqueda para la función


DECODE. Si el trabajo del empleado es PR_REP el salario se mostrará incrementado
en 15%, si es MK_MAN el salario se mostrará incrementado en 20% y para el resto de
los trabajos no se incrementa el salario mostrándose sólo el salario actual. La
información de muestra para los empleados que trabajan en el departamento 20, 70 0
90.

18 www.iplacex.cl
Demostrando la Idea

Trabajando TO_CHAR formato fecha

Fecha 1: Se encuentra en número (año en 4 dígitos) y debe estar separado por un /.

Fecha 2: Su formato debe estar día y año de contrato en número y el mes en palabra.

Fecha- hora del sistema: Se debe mostrar la fecha y hora del sistema en donde se
debe incorporar las palabras DE y DEL.

Debes ingresar lo siguiente:

1. TO_CHAR (HIRE_DATE, 'DD/MM/YYYY')


2. TO_CHAR (HIRE_DATE, 'DD MONTH YYYY')
3. TO_CHAR (SYSDATE, 'DD "DE" MONTH "DEL" YYYY HH24:MI:SS')

19 www.iplacex.cl
Trabajando TO_CHAR con números

Se necesita buscar el sueldo del señor Abel, en donde se deberá entregar 4 formatos
diferentes para la transformación del número que se encuentran sin formatos. Se debe
aplicar los alias en el siguiente orden FORMA_1, FORMA_2, FORMA_3, FORMA 4.

Debes ingresar lo siguiente:

1. TO_CHAR (SALARY, '$99,999.00')


2. TO_CHAR (SALARY, '$0099,999.00')
3. TO_CHAR (SALARY, '$99G999D00')
4. TO_CHAR (SALARY, '99999V000')

20 www.iplacex.cl
Trabajando con NVL

Se deberá trabajar con la función NVL, en porcentaje en comisión se deberá buscar los
empleados que no cuenten con una comisión, en ese caso se deberá retornar con un
valor 0. En sueldo anual se deberá calcular el sueldo anual y para los que no cuentan
comisión su valor debe estar en 0, con ello podrá sacar el sueldo anual. No está el jefe,
se deberá buscar los departamentos que cuenten con jefe y el departamento que no lo
tenga se deberá mostrar el siguiente mensaje: ‘No está el jefe’.

Debes ingresar lo siguiente:

1. NVL (COMMISSION_PCT,0)
2. (SALARY *12*NVL(COMMISION_PCT,0))
3. NVL (TO_CHAR (MANAGER_ID), “No está el jefe”)

21 www.iplacex.cl
Trabajando con NVL2

Se deberá trabajar con un NVL2, en donde el string SALARIO+COMISION, si el


porcentaje de comisión tiene un valor nulo se deberá mostrar el siguiente mensaje
SOLO SALARIO para los empleados que se encuentra en la lista 100, 101 , 114 ,147,
148 , 149.

Debes ingresar lo siguiente:

NVL2(COMISSION_PCT, ’SALARIO+COMISION’, ‘SOLO SALARIO’) AS

22 www.iplacex.cl
Trabajando con NULL IF

Debemos trabajar con NULL IF. Se deberá crear un NULL IF en donde la condición 1
se deberá contar el nombre del trabajador y la condición 2 deberá contar el apellido del
trabajador. Toda esta búsqueda solo debe ser para los trabajadores que cuenten con
su siguiente ID 100, 104 ,106, 110.

Debes ingresar lo siguiente:

NULLIF (LENGTH(FIRST_NAME), LENGTH(LAST_NAME))

23 www.iplacex.cl
Trabajando con COALESCE

Trabajaremos con COALESCE, tenemos que retornar la primera expresión no nula de


una lista obtenida. Vamos a tener que mostrar el valor del porcentaje de comisión si no
es nula, en caso contrario, deberemos mostrar la identificación del jefe. Si ambos
valores son nulos tiene que mostrar 9999 para los empleados que trabajan solo en los
departamentos 10, 20, 40.

Debes ingresar los siguiente:

COALESCE(COMMISSION_PCT, MANAGER_ID, 9999)

24 www.iplacex.cl
Trabajando con CASE

Debemos trabajar con la función CASE. Se debe buscar el valor de la columna JOB_ID
en donde deberemos aplicar las siguientes restricciones: Si el trabajador es PR_REP
su sueldo deberá ser aumentado en el 15%, si el trabajador es MK_MAN el salario se
mostrará aumentado en 20% y para los demás trabajadores no se podrá aumentar.
Solo esta información se debe mostrar para los trabajadores que trabajan en el
departamento 70, 20 o 110.

Debes ingresar lo siguiente:

1. CASE JOB_ID WHEN ‘PR_REP’ THEN 1.25*SALARY


2. WHEN ‘MK_MAN’ THEN 1.35*SALARY

25 www.iplacex.cl
Trabajando con CASE

Se deberá realizar una búsqueda en donde alguna expresión válida para mostrar un
mensaje según el salario que posean los empleados que trabajan en el departamento
60 y 90. Si el empleado posee un salario de hasta 5000 se mostrará el mensaje Bajo, si
posee un salario entre 5001 y 10000 mostrará el mensaje Medio, si posee un salario
entre 10001 y 20000 mostrará el mensaje Bueno y si posee un salario mayor a 20000
mostrará el mensaje Excelente.

Debes ingresar lo siguiente:

1. (CASE WHEN SALARY<=5000 THEN ‘Bajo’


2. WHEN SALARY<=10000 THEN ‘Medio’
3. WHEN SALARY<=20000 THEN ‘Bueno’
4. ELSE ‘Alto’ END) “CLASIFCANDO EL SUELDO”

26 www.iplacex.cl
Trabajando con DECODE

El empleado es PR_REP el salario se mostrará incrementado en 15%, si es MK_MAN


el salario se mostrará incrementado en 20% y para el resto de los trabajos no se
incrementa el salario mostrándose sólo el salario actual. La información de muestra
para los empleados que trabajan en el departamento 20, 70 o 90.

Debes ingresar lo siguiente:

1. ‘PR_REP’, 1.15*SALARY,
2. ‘MK_MAN’, 1.20*SALARY,

27 www.iplacex.cl
28 www.iplacex.cl

También podría gustarte