Está en la página 1de 27

Bases de Datos

1º DAW
UD6.2.1 - Funciones

Private & Confidential


INTRODUCCIÓN
Funciones

Oracle incorpora una serie de instrucciones que permiten realizar cálculos avanzados,
o bien facilitar la escritura de ciertas expresiones.
Todas las funciones reciben datos para poder operar (parámetros) y devuelven un
resultado que depende de los parámetros enviados a la función.
Existen los siguientes tipos:

Private & Confidential


FUNCIONES ARITMETICAS
Taxonomía

Trabajan con números, variables o


columnas, por ejemplo:
ABS, MOD, POWER, ROUND, etc

Trabajan con un grupo de columnas dentro


de una misma fila, por ejemplo: GREATEST,
LEAST

Private & Confidential


FUNCIONES ARITMÉTICAS
Valores simples

Desde el entorno de ORACLE, prueba las siguientes consultas:

Función ABS(n): Calcula el valor absoluto de n

SELECT ename "Empleado", sal "Salario" , sal - 3000 "Salario - 3000",


ABS (sal-3000) "Valor Absoluto"
FROM emp

Private & Confidential


FUNCIONES ARITMÉTICAS
Valores simples

Desde el entorno de ORACLE, prueba las siguientes consultas:

Función POWER(valor,exponente) Eleva el valor al exponente indicado

SELECT ename "Nombre", comm "Comisión",


POWER (comm,2) "Cuadrado de la comisión",
POWER (2,3) "Siempre 8"
FROM emp
WHERE comm > 0

Private & Confidential


FUNCIONES ARITMÉTICAS
Valores simples

Desde el entorno de ORACLE, prueba las siguientes consultas:

Función ROUND(n,decimales) Redondea el número al siguiente número con el


número de decimales indicado más cercano. ROUND(8.239,2) devuelve 8.3

SELECT ename "Nombre", sal "Salario", sal/3 "1/3 del Salario",


ROUND (sal/3, 2) "Redondeo a 2 decimales"
FROM emp
WHERE comm > 0

Private & Confidential


FUNCIONES ARITMÉTICAS
Listas

Desde el entorno de ORACLE, prueba las siguientes consultas:

Función GREATEST (col1, col2, ...): Devuelve la mayor columna

SELECT ename "Nombre", comm, sal, greatest (comm, sal)


FROM emp

Private & Confidential


FUNCIONES ARITMÉTICAS
Listas

Desde el entorno de ORACLE, prueba las siguientes consultas:

Función LEAST (col1, col2, ...): Devuelve la menor columna

SELECT ename "Nombre", comm, sal, least(comm, sal) "El menor"


FROM emp
WHERE comm>0

Private & Confidential


FUNCIONES ARITMÉTICAS
Grupo de Valores

A partir de uno o muchos valores, devuelve uno y sólo un valor


SQL no le coloca un nombre a la columna, por eso es recomendable hacerlo nosotros
Ejemplos: SUM, AVG, MIN, MAX, COUNT, VARIANCE, etc

Private & Confidential


FUNCIONES ARITMÉTICAS
Grupo de valores

Desde el entorno de ORACLE, prueba las siguientes consultas:

SELECT COUNT (sal) "Total de Salarios",


COUNT (DISTINCT sal) "Salarios distintos",
SUM (sal) "Suma Total",
MAX (sal) "Salario Mayor",
MIN (sal) "Salario Menor",
ROUND (AVG(sal),2) "Salario Medio"
FROM emp

Private & Confidential


FUNCIONES ARITMÉTICAS
Grupo de valores

Desde el entorno de ORACLE, prueba las siguientes consultas:

SELECT COUNT (ename) "Cantidad de Empleados",


COUNT (*) "Igual resultado",
COUNT (comm) "Con Comisión"
FROM emp

Private & Confidential


FUNCIONES ARITMÉTICAS
Grupo de valores

Desde el entorno de ORACLE, prueba las siguientes consultas:

SELECT COUNT (*), comm


FROM emp

Private & Confidential


FUNCIONES DE CADENA DE CARACTER
Taxonomía

Devuelven un carácter o conjunto de


caracteres:
CONCAT, UPPER, REPLACE, etc

Devuelven un valor numérico:


INSTR, LENGHT, etc

Private & Confidential


FUNCIONES DE CADENA DE CARACTER
Valores Carácter

Desde el entorno de ORACLE, prueba las siguientes consultas:

Función CONCAT: Mismo propósito que ||

SELECT empno "Código", CONCAT ('Don ', ename)


FROM emp

Private & Confidential


FUNCIONES DE CADENA DE CARACTER
Valores Carácter

Desde el entorno de ORACLE, prueba las siguientes consultas:

SELECT ename "Nombre",


UPPER (ename),
LOWER (ename),
INITCAP (ename)
FROM emp

Private & Confidential


FUNCIONES DE CADENA DE CARACTER
Valores Carácter

Desde el entorno de ORACLE, prueba las siguientes consultas:

Función REPLACE(texto, textoABuscar, textoReemplazo)


Buscar el texto a buscar en un determinado texto y lo cambia por el indicado
como texto de reemplazo

SELECT oficio "Original",


INITCAP( REPLACE (LOWER(oficio), 'do', 'dores')) "DO por DORES"
FROM emple

Private & Confidential


FUNCIONES DE CADENA DE CARACTER
Valores Numéricos

Desde el entorno de ORACLE, prueba las siguientes consultas:

Función INSTR(texto, textoBuscado [,posInicial [, nAparición]])


Obtiene la posición en la que se encuentra el texto buscado en el texto
inicial. Se puede empezar a buscar a partir de una posición inicial concreta e
incluso indicar el número de aparición del texto buscado.
Ejemplo, si buscamos la letra a y ponemos 2 en nAparición, devuelve la
posición de la segunda letra a del texto). Si no lo encuentra devuelve 0.

En la siguiente transparencia tienes un ejemplo…

Private & Confidential


FUNCIONES DE CADENA DE CARACTER
Valores Numéricos
Función INSTR
SELECT oficio "Original", LENGTH (oficio) "Tamaño",
INSTR(oficio, 'E') "1ª E",
INSTR(oficio, 'E',2) “1ª E desde caracter 1“,
INSTR(oficio,’E’ ,2,2) “2ª E desde caracter 2”
FROM emple

Private & Confidential


FUNCIONES PARA FECHAS
DATE

El tipo DATE permite almacenar fechas. Las fechas se pueden escribir en formato día,
mes y año entre comillas. El separador puede ser una barra de dividir, un guión y casi
cualquier símbolo.
Para almacenar la fecha actual basta con utilizar la función SYSDATE que devuelve
esa fecha.

SELECT apellido, fecha_alt, SYSDATE


FROM emple
WHERE fecha_alt < SYSDATE

Private & Confidential


FUNCIONES PARA FECHAS
TIMESTAMP

Es una extensión del anterior, almacena valores de día, mes y año, junto con hora,
minuto y segundos (incluso con decimales). Con lo que representa un instante
concreto en el tiempo.

Un ejemplo de TIMESTAMP sería ‘2/2/2004 18:34:23,34521’.

En este caso si el formato de fecha y hora del sistema está pensado para el idioma
español, el separador decimal será la coma (y no el punto).

Hay que tener en cuenta que a los valores de tipo fecha se les pueden sumar números
y se entendería que esta suma es de días. Si tiene decimales entonces se suman días,
horas, minutos y segundos. La diferencia entre dos fechas también obtiene un
número de días.

Private & Confidential


FUNCIONES PARA FECHAS
Fecha actual

Para obtener la fecha actual, también tenemos:

SELECT apellido, fecha_alt, SYSTIMESTAMP


FROM emple

Private & Confidential


FUNCIONES PARA FECHAS
Comparaciones

El formato con el que se almacena es anglosajón, por lo que:

SELECT apellido, fecha_alt


FROM emple
WHERE fecha_alt > '12/31/1991’

SELECT apellido, fecha_alt


FROM emple
WHERE fecha_alt > '12/31/1990'
AND fecha_alt < '7/31/1991'

Private & Confidential


FUNCIONES PARA FECHAS
Manejo de fechas

Desde el entorno de ORACLE, prueba las siguientes consultas:

Función ADDMONTHS (fecha,n) Añade a fecha el número de meses indicado por n

SELECT apellido, fecha_alt, ADD_MONTHS (fecha_alt,2)


FROM emple

Private & Confidential


FUNCIONES PARA FECHAS
Manejo de fechas

Desde el entorno de ORACLE, prueba las siguientes consultas:

Función LAST_DAY(fecha) Obtiene el último día del mes al que pertenece la


fecha. Devuelve un valor DATE

SELECT fecha_alt "Fecha Alta", LAST_DAY (SYSDATE) "Último día del mes"
FROM emple

Private & Confidential


FUNCIONES DE CONVERSIÓN
Transforman un tipo de dato en otro

Oracle es capaz de convertir datos automáticamente a fin de que la expresión final


tenga sentido. En ese sentido son fáciles las conversiones de texto a número y
viceversa.

Ejemplos:

SELECT 5+'3' FROM DUAL

SELECT 5 || '3' FROM DUAL

También ocurre eso con la conversión de textos a fechas. De hecho es forma habitual
de asignar fechas.

Pero en diversas ocasiones querremos realizar conversiones explícitas.

Private & Confidential


FUNCIONES DE CONVERSIÓN
TO_CHAR

Obtiene un texto a partir de un número o una fecha. En especial se utiliza con fechas
(ya que de número a texto se suele utilizar de forma implícita).

SELECT TO_CHAR(SYSDATE, 'DD/MONTH/YYYY, DAY HH:MI:SS')


FROM DUAL

Private & Confidential


FUNCIONES DE CONVERSIÓN
Otras funciones

TO_NUMBER
Convierte textos en números. Se indica el formato de la conversión

TO_DATE
Convierte textos en fechas.

Private & Confidential

También podría gustarte