EXES
EL MODELO RELACIONAL
EL LENGUAJE SQL
FUNCIONES SQL
FUNCIONES DE GRUPO
JOIN
SUBCONSULTAS
D.M.L.
D.D.L.
VISTAS
ENTORNO SQL PLUS
PL/SQL
GENERALIDADES PL/SQL
CURSORES
EXCEPCIONES
FUNCIONES
CRÉDITOS
LA COMPAÑÍA
 
Área de Base de datos
  Manual de Iniciación a Oracle
www.exes.es
Tel: 902 360 417
   Principal
 Exes   Contactar 
Tema 3 Funciones S.Q.L. | Manual de Iniciación a Oracle

TEMA 3
FUNCIONES S.Q.L.

S.Q.L.
Funciones SQL

  • Existen dos tipos de funciones:
    • Funciones a nivel de fila
    • Funciones a nivel de múltiples filas
  • Funciones a nivel de fila. Tipos:
    • Carácter
    • Número
    • Fecha
    • Conversión
  • Funciones a nivel de grupo. Tipos:
    • Manipulan grupos de filas y devuelven un resultado por cada uno de ellos.

S.Q.L.
Funciones de Caracteres

  • Pueden ser de dos tipos:
    • Funciones de conversión
    • Funciones de manipulación de caracteres
  • De manipulación de caracteres:
    • CONCAT
    • SUBSTR
    • LENGTH
    • INSTR
    • LPAD Y RPAD
  • De conversión:
    • LOWER , UPPER e INITCAP

S.Q.L.
Funciones de conversión caracteres

  • LOWER: Convierte a minúsculas.
  • UPPER: Convierte a mayúsculas.
  • INITCAP: Convierte la primera letra de cada palabra en mayúsculas, y el resto en minúscula.
  • Atención: Usar una función de conversión dentro de la cláusula WHERE puede ser altamente ineficiente porque si la columna afectada forma parte de un índice éste lo desactiva, provocando un bajo rendimiento.

S.Q.L.
Funciones manipulación caracteres

  • CONCAT: Concatena dos valores.
  • SUBSTR: Extrae una subcadena.
  • LENGTH: Devuelve la longitud de la cadena.
  • INSTR: Devuelve la posición de un carácter o subcadena.
  • LPAD: Justifica a la derecha la cadena.
  • RPAD: Justifica a la izquierda la cadena.

S.Q.L.
Funciones Numéricas

  • ROUND (columna | expresión, n)
    • Redondea a n posiciones decimales. Si se omite n, no se redondea con decimales. Si n es negativo, los números a la izquierda del punto decimal se redondean a decenas, centenas, ...
  • TRUNC (columna | expresión, n)
    • Trunca en la enésima posición decimal. Si se omite n, sin lugares decimales. Si n es negativo, los números a la izquierda del punto decimal se truncan a cero.
  • MOD (m, n)
    • Devuelve el resto de la división de m por n.

S.Q.L.
Ejemplos de funciones numéricas

  • SQL> SELECT ROUND(45.923, 2), ROUND(45.923, 0), ROUND(45.923, -1)
    FROM SYS.DUAL;
  • Resultado: 45.92   46   50
  • SQL> SELECT TRUNC(45.923, 2), TRUNC(45,923), TRUNC(45.923, -1)
    FROM SYS.DUAL;
  • Resultado: 45.92   45   40

S.Q.L.
Trabajando con fechas

  • Oracle almacena fechas en un formato numérico interno de 7 bytes:
    • Siglo, año, mes, día, horas, minutos, segundos
  • El formato de fecha por defecto es DD-MON-YY
  • SYSDATE es una función que devuelve fecha y hora (pseudocolumna del sistema)
  • DUAL es una tabla virtual de la bd., que puede ser usada para inspeccionar SYSDATE.

S.Q.L.
Operadores aritméticos de fechas

  • Sumar o restar un número a/o de una fecha da por resultado una fecha.
  • Restar dos fechas para encontrar la cantidad de días entre esas fechas.
  • Sumar horas a una fecha dividiendo la cantidad de horas por 24.

S.Q.L.
Funciones de Fecha (I)

  • MONHTS_BETWEEN (fecha1, fecha2)
    • Número de meses entre dos fechas. El resultado puede ser positivo o negativo.
  • ADD_MONTHS (fecha, n)
    • Añade n meses a fecha, según calendario. N debe de ser un número entero y puede ser negativo.
  • NEXT_DAY (fecha, ‘caracter’)
    • Devuelve la fecha del día especificado (‘carácter’) siguiente a fecha. Carácter puede ser un número representando un día o una cadena de caracteres, p.ej. ‘FRIDAY’.

S.Q.L.
Funciones de Fecha (II)

  • LAST_DAY (fecha)
    • Devuelve la fecha del último día del mes que contiene fecha.
  • ROUND (fecha [,’fmt’])
    • Cuando no se especifica ningún formato, devuelve la fecha del primer día del mes contenido en fecha. Si fmt=YEAR, encuentra el primer día del año.
  • TRUNC (fecha [,’fmt’])
    • Devuelve la fecha con la porción del día truncado en la unidad especificada por el modelo de formato fmt. Si se omite el formato, laf echa se trunca en el día más próximo.

S.Q.L.
Ejemplos funciones de fecha

  • MONTS_BETWEEN (‘01-SEP-95’, ‘11-JAN-94’) 19.6774194
  • ADD_MONTHS(‘11-JAN-94’, 6) ‘11-JUL-94’
  • NEXT_DAY (‘01-SEP-95’, ‘FRIDAY’) ‘08-SEP-95’
  • LAST_DAY (‘01-SEP-95’) ‘30-SEP-95’
  • ROUND (‘25-JUL-95’, ‘MONTH’) ‘01-AUG-95’
  • ROUND (‘25-JUL-95’, ‘YEAR’) ‘01-JAN-96’
  • TRUNC (‘25-JUL-95’, ‘MONTH’) ‘01-JUL-95’
  • TRUNC (‘25-JUL-95’, ‘YEAR’) ‘01-JAN-95’

S.Q.L.
Formatos de Fecha (I)

  • YYYY / YEAR
    • Año completo en número / Año en letras
  • MM / MONTH
    • Nº del mes con dos dígitos / Nombre completo del mes
  • DY / DAY
    • Día de la semana en tres letras / Nombre completo del día
  • fm (fill mode)
    • Elimina los espacios en blanco de relleno o suprime ceros a la izquierda

S.Q.L.
Formatos de Fecha (II)

  • Obtención de la hora:
    • HH / HH12 / HH24
      • Hora del día / Hora (1-12) / Hora (1-24)
    • MI / SS / SSSS
      • Minutos / Segundos / Segundos después de medianoche
    • AM o PM
      • Indicador del Meridiano
    • Sufijo SP / SPTH o THSP
      • Deletreo del número / Deletreo números ordinales
    • Se permiten literales

S.Q.L.
Funciones de conversión (I)

  • La conversión de tipos de datos puede ser:
      • IMPLÍCITA: Realizada automáticamente por Oracle
      • EXPLÍCITA: El usuario es quien la realiza
  • Conversión Implícita de datos
      • De VARCHAR2 o CHAR a NUMBER
      • De VARCHAR2 o CHAR a DATE
      • De NUMBER a VARCHAR2
      • De DATE a VARCHAR2
    • Estas conversiones se realizan por asignaciones, si Oracle 8 puede convertir el tipo de dato del valor utilizado en la asignación en el tipo de dato que era el objetivo de la asignación.

S.Q.L.
Funciones de conversión (II)

  • TO_CHAR (número | fecha [,’fmt’])
    • Convierte un número o fecha en una cadena de caracteres VARCHAR2 con el modelo de formato fmt.
      • 9: Representa un número
      • 0: Fuerza a que se muestra el cero
      • $: Signo de dólar
      • L: Usa el signo de moneda local
      • .: Imprime el punto decimal
      • ;: Imprime el indicador de millar
      • Para fechas, los fmt anteriores.

S.Q.L.
Funciones de conversión (III)

  • TO_NUMBER (char)
    • Convierte una cadena de caracteres con dígitos en un número.
  • TO_DATE (char [,’fmt’])
    • Convierte una cadena de caracteres representando una fecha en un valor de fecha según el fmt especificado. Si se omite el fmt, el formato es DD-MON-YY.
  • NVL (expr1, expr2)
    • Convierte un nulo (expr1) a un valor de tipo fecha, cadena o número (expr2).

S.Q.L.
La Función DECODE

La Función DECODE
  • Hace las veces de sentencia CASE o IF-THEN-ELSE, para facilitar consultas condicionales.
    • Descifra una expresión después de compararla con cada valor de búsqueda. Si la expresión es la misma que la búsqueda, se devuelve el resultado. Si se omite el valor por defecto, se devolverá un valor nulo donde una búsqueda no coincida con ninguno de los valores resultantes.

S.Q.L.
Uso de DECODE

  • SQL> SELECT job, sal,
    DECODE (job, ‘ANALYST’, sal*1.1, ‘CLERK’, sal*1.15, ‘MANAGER’, sal*1.20, sal) AS “Nuevo salario”
    FROM emp;
  • Si job = ‘ANALYST ‘ entonces el salario se incrementa en un 10%
  • Si job = ‘CLERK’ entonces se incrementa en un 15%
  • Si jog = ‘MANAGER’ entonces se incrementa en un 20%
  • Para otro caso, entones no hay incremento de salario

 

··> Ver todos los cursos
Solicita Información 
Rellene sus datos y amplíe información sobre nuestros Programas Formativos
Nombre *
Apellidos *
Provincia
País
E-mail *
Tel. Móvil *
Tel. Fijo
Curso:
¿Por qué desea cursar este Programa?
Por favor, para validar su información introduzca el siguiente código (*):
 
 
 
 
Sello de Calidad   Sello de Calidad
  EXES - C/ Albasanz, 14 Bis, 1-C. 28037 Madrid - Tel: 902 360 417 Fax: 902 931 305 - exes@exes.es