Académique Documents
Professionnel Documents
Culture Documents
INDICE
1 FUNCIONES ARITMETICAS
1.1-Funciones de Variables simples.
1.2.-Funciones de grupos de valores.
1.3.-Funciones de Listas.
2 FUNCIONES DE CADENA DE CARACTERES.
2.1.-Funciones que devuelven valores de carácter.
2.2-Funciones que devuelven valores numéricos
3 FUNCIONES PARA EL MANEJO DE FECHAS
4 FUNCIONES DE CONVERSION
5.OTRAS FUNCIONES
1 FUNCIONES ARITMETICAS
Devuelven datos numericos
Son las siguientes:
183/4
select (183-mod(183.4))/4
from dual;
1.1.5 NVL(VALOR , EXPRESION). Esta función se utiliza para sustituir un valor nulo por otro valor, si
valor es nulo es sustituido por la expresión y sino lo es la función devuelve el valor.
Ejemplo: Obtener el nombre y salario total (salar + comis) de todos los empleados;
Ejercicio: Obtener el nombre y salario total (salar + comis) de todos los empleados, los empleados que no
tienen comisión se les paga 100 más del salario;
1.1.6 POWER(n, exponente). Calcula la potencia de un número, devuelve n elevado al exponente, pueden
ponerse números reales.
Ejemplo: Obtener 3 elevado 3 5.23 elevado a 4.43
1.1.7 ROUND(numero[,m]). Redondea los números con una cantidad de decimales de precisión. M numero
de decimales. No dejas nada se queda sin decimales
Ejemplos: Obtener 5 elevado a 3 y 5.23 elevado 4.43 con dos decimals de precision.
Ejercicio: Obtener el salario medio por departamento, redondeado a dos decimales de precisión.
1.1.8 SIGN(VALOR). Esta función indica el signo del valor, -1 = negativo, 1=positivo
Ejercicio: 1º Obtener el signo de -4556 y 2º de salar del empleado ‘SANTOS, SANCHO’
1.1.10 TRUNC(NUMERO[,M]). Trunca los números para que tenga una cierta cantidad de dígitos de
precisión (decimales).
Ejercicio: Obtener el salario medio por departamento, truncado a dos decimales de precisión.
AVG (N)
COUNT (* | EXPRESION)
MAX EXPRESION)
MIN (EXPRESION)
SUM (EXPRESION)
1.3.-Funciones de Listas.
Actúan sobre un grupo de columnas dentro de la misma fila
Hay dos tipos:
1.3.1 GREATEST(VALOR1, VALOR2, VALOR3, ….) Obtiene el valor más grande de la lista de valores
Ejemplo:
1.3.2 LEAST (VALOR1, VALOR2, VALOR3, ….) Obtiene el valor más pequeño de la lista de valores.
Ejemplo:
Ejercicio: Crear una tabla (ALUMNOS23), cada registro compuesto por los campos (NOM,
EVA1,EVA2,EVA3) e introducir los nombres y notas de 4 alumnos en cada una de sus tres evaluaciones.
Datos de la tabla ALUMNOS23 Pepe 8 9 4
Juan 7 6 9
Ana 3 8 5
Jose 6 4 7
Posteriormente obtener:
1 Por cada alumno: nombre, nota mayor, nota menor y nota media(redondeada a 1 decimal).
Select nombre
“Nombre”,GREATEST(eva1,eva2,eva3),LEAST(eva1,eva2,eva3),ROUND(eva1+eva2+eva3)/3,1) from
alum;
2 Por cada evaluación: Numero de evaluación, nota mayor, nota menor y nota media(redondeada a 1
decimal).
Select ‘eva1’,MAX(eva1),
min(eva1),round(avg(eva1),1)
From alum;
Select ‘eva2’,MAX(eva2),
min(eva2),round(avg(eva2),1)
From alum;
UNION
Select ‘eva3’,MAX(eva3),
min(eva3),round(avg(eva3),1)
From alum;
3 De toda la tabla: nota mayor, nota menor y nota media (redondeada a 1 decimal).
SELECT ‘El empleado ’||nomem||’ trabaja en el departamento ‘||nomde|| ‘ con sueldo ‘||salar
From temple e, tdepto d
Where e.numde=d.numde;
2.1.5 INITCAP (cad). Convierte la primera letra de cada palabra de "cad" a mayúscula y el resto a
minúscula.
Ejemplo: Visualizar el nombre 'ROBERTO POZO INIGO' la primera letra de cada palabra en mayúscula el
resto en minúsculas.
2.1.6 LPAD (cad1, n[,cad2]). Esta función añade caracteres a la izquierda de la cadena cad1 hasta que tiene
una cierta longitud. Devuelve cad1 con longitud n ajustado a la derecha, cad2 es la cadena con la que se
rellena por la izquierda. Si se suprime se rellena por espacios en blancos.
Ejemplo: rellenar por la izquierda con el caracter # los nombres de los empleados, hasta que tengan una
longitud de 25 caracteres.
*el 25 es la longitud del campo a su izquierda, y en caso de que se pase de esa cifra, se rellenará con # como
hemos indicado a su derecha (los completa hacia la izquierda).
2.1.7 RPAD (cad1, n[,cad2]). Añade caracteres a la derecha de la cadena hasta que tiene una cierta longitud.
Ejemplo: rellenar por la derecha con el carácter # los nombres de los empleados, hasta que tengan una
longitud de 25 caracteres.
*el 25 es la longitud del campo a su izquierda, y en caso de que se pase de esa cifra, se rellenará con # como
hemos indicado a su derecha (los completa hacia la derecha).
¿Que visualiza?
Ejemplo: de la cadena ' FUNCIONES', suprimir los espacios en blanco por la izquierda
hasta encontrar un valor distinto.
SELECT LTRIM(' FUNCIONES') FROM DUAL;
Ejemplo: de la cadena 'FUNCIONES ', suprimir los espacios en blanco por la derecha
hasta encontrar un valor distinto.
2.1.11 SUBSTR (cad,inicio [,n]). Obtiene parte de una cadena. Extrae parte de una cadena, devuelve la
subcadena que abarca desde la posición de inicio tanto caracteres como indique n. Si se omite n devuelve la
cadena desde la posición especificada por el inicio hasta el final. n no puede ser inferior a 1, el valor inicio
puede ser negativo en cuyo caso devuelve la cadena comenzando por el final.
2.1.12 TRANSLATE (cad1, cad2, cad3). Convierte caracteres de una cadena en caracteres diferentes,
según un plan de sustitución marcado por el usuario. Devuelve cad1 con los caracteres
encontrado en cad2 sustituidos por los caracteres de cad3.
Ejemplo:
Ejemplo: Sustituir en la frase (‘EL NOMBRE DE EMPLEADO PEPE TRABAJA’ cambiar las E por A y las
B por C.
Select TRANSLATE(‘EL NOMBRE DE EMPLEADO PEPE TRABAJA’,’EB’,’AC’ ) FROM DUAL;
Solucion:
SOUN SOUN
---- ----
S530 S530
2.2.-Funciones que devuelven valores numéricos
Ejemplo: Obtener posición en que se encuentra la primera vez la cadena 'ta', en la frase ‘Vuelta ciclista de
talavera’,
SELECT NOMEM,
SUBSTR(NOMEM,INSTR(NOMEM,’,’)+2)
FROM TEMPLE;
Ejercicios: Visualizar el apellido (sin nombre) de todos los empleados de temple.
SELECT NOMEM,
SUBSTR(NOMEM,1,INSTR(NOMEM,’,’)-1)
FROM TEMPLE;
Ejercicios: Visualizar <nombre>, <apellido> de todos los empleados de temple;
SELECT NOMEM,
SUBSTR(NOMEM,INSTR(NOMEM,’,’)+2)
||’, ‘||
SUBSTR(NOMEM,1,INSTR(NOMEM,’,’)-1)
FROM TEMPLE;
SELECT NOMEM,
INITCAP(SUBSTR(NOMEM,INSTR(NOMEM,’,’)
+2))
||’, ‘||
INITCAP(SUBSTR(NOMEM,1,INSTR(NOMEM,’,’)
-1))
FROM TEMPLE;
En Oracle los campos donde se guardan fechas, deben de ser tipo DATE. Por omisión el formato que tiene
es ‘DD-MM-YY’
Ejemplo: Obtener los meses de diferencia que hay entre las fechas ‘04/02/2012’ y ‘07/01/16’
(Hacer que salgan meses completos y positivos independientemente del orden en que introduzcamos las
fechas)
Select MONTHS_BETWEEN(‘04/02/2012’,’07/01/16’)
Ejercicio: Obtener nuestra edad a partir de la fecha de nacimiento y de la fecha del sistema.
Ejercicio: Obtener el número de meses que tenemos a partir de la fecha de nacimiento y de la fecha del
sistema.
3.5 NEXT_DAY (fecha, cad)Devuelve la fecha del primer día de la semana indicado por "cad"
después de la fecha indicada por "fecha".
Ejemplo: Obtener la fecha del primer sábado a partir de hoy (fecha del sistema).
Ejercicio: Si hoy es Martes (26/04/16) ¿qué fecha será el próximo viernes? Obtenerla.
4 Funciones de conversión.
4.1 TO_CHAR Transforma un tipo DATE o NUMBER en una cadena de caracteres, permite dos formatos
dependiendo de si el dato a transformar es una fecha o un número.
4.1.1 TO_CHAR (fecha,’formato’) Convierte una fecha (DATE) a tipo caracteres (VARCHAR2).
ejercicios
ejemplo:
Partiendo de la fecha del sistema obtener la frase:
En Madrid, a <dia> de <mes> del año <año>
Nota: Por defecto el formato para la fecha viene definido por el paramentro NLS_TERRITORY, que
especifica el idioma para el formato de la fecha, los separadores de miles, el signo decimal, etc… Este
parámetro se inicializa al arrancar Oracle, para el idioma español este parámetro es
NLS_TERRITORY=SPAIN
*Con D es para poner los decimales, la G es para poner el punto (de los miles) Ej: 1.832 (“999G999”).
Formatos más utilizados
999 - Cada 9 equivale a un DIGITO (NO UN NUMERO COMO TAL), devuelve el valor con el
numero especificado de dígitos
-ejemplo:
*si lo pones ‘s999...’ Te pone su signo a la izquierda, si lo pones ‘999s...’ Te pone su signo a la derecha.
??Nota: Para definir los caracteres decimal(D) y separador de miles(G), se utiliza el parámetro
NLS_NUMERIC_CHARACTERS=’DG’. La orden es:
SQL>ALTER SESSION SET NLS_NUMERIC_CHARACTERS=’,.’
Pone el carácter decimal a la coma y el separador de miles el punto.
???
4.3 TO_DATE(cadena, ‘formato’). Transforma una cadena de tipo char o varchar2 a tipo date.
Los formatos son los utilizados en to_char(fecha,’formato’)
Ejercicios:
Obtener en tipo DATE (fecha) la cadena de caracteres ‘13012016’.
Obtener el dia, mes y año de la cadena ‘120315’.
ALTER SESSION
SET NLS_DATE_FORMAT=’DD/MM/YYYY’;
Notas:
1 definir los caracteres que se utilizan para D y para G. ejem D=. y G=, (como en España)
SQL> ALTER SESSION
SET NLS_NUMERIC_CHARACTERS=’.,’
---------------------------------------
SELECT TO_CHAR(TO_DATE(15032011,'DD/MM/YYYY'), ' DAY MONTH DD "FECHA" ') FROM
DUAL;
Adicional
TO_CHAR(84459964425, ‘999G999G9D99’)
D Decimal
G Miles
5.Otras funciones:
5.1 DECODE(var,val1,cod1,val2,cod2…,valor-por-defecto).
Esta función sustituye un valor por otro, si var es igual a cualquier valor de la lista. Devuelve el
correspondiente código cod1, cod2 en caso contrario devuelve el valor por defecto.
NOTA. Se puede programar IF_THEN_ELSE
Ejemplo:
Crear una tabla EMP22, campos ( NOM varchar2(25), PRO varchar2(15)
Introducir 5 empleados dos de MADRID (COD_P=28) ,dos de BURGOS (COD_P=08), y uno de SEVILLA
(COD_P=09),
Ejercicio: Obtener un listado de EMP22 en el que aparezca el nombre y el código postal del empleado (si
PRO=’MADRID’ el código es 28, si PRO=’BURGOS’ el código es 09, cualquier otra provincia el código
es 00.
http://www.desarrolloweb.com/articulos/1899.php
mos los distintos tipos de funciones y algunos ejemplos de las mismas con SQL para Oracle.
Por Agustin Jareño
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Funciones de valores simples:
Funciones de conversión: