Está en la página 1de 17

FUNCIONES SQL

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:

1.1-Funciones de Variables simples.

1.1.1 ABS(N). Devuelve el valor absoluto de la variable n.


Ejemplo: Obtener el valor absoluto de -20
Select abs(-20) FROM DUAL;

Nota: DUAL TABLA QUE TIENE UN VALOR Y UN SOLO REGISTRO

SELECT * FROM DUAL;

1.1.2 CEIL(n). Devuelve el valor entero superior o igual a n.


Ejemplo: Obtener el valor entero superior o igual a 20.7 -20.7

Select ceil(20.7) , ceil(-20.7) FROM DUAL;


21 -20

1.1.3 FLOOR(N). Devuelve el valor entero inmediato o inferior a n.


Ejemplo: Obtener el valor entero inferior o igual a 20.7 -20.7

Select FLOOR (20.7) , FLOOR (-20.7) FROM DUAL;


1.1.4 MOD(M, N). Devuelve el resto de la división entera, el resultado de dividir M entre N. Tanto M como
N pueden ser números reales (pueden tener decimales).
Ejemplo: Obtener el resto entero de dividir 19 entre 5
19/5
Select (19-mod(19.5))/5
from dual;

183/4
select (183-mod(183.4))/4
from dual;

Ejercicio: Obtener el cociente entero de dividir 19 entre 5

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;

select nomem salar+NVL (comis,0)


from temple; *Cuando ‘comis’ sea null, le pone el valor 0.

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;

select nomem salar+NVL (comis,100)


from temple; *Cuando ‘comis’ sea null, le pone el valor 100 (porque te dice 100 mas de 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

select POWER(3,3), POWER(5,23,4,43) FROM DUAL;

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.

SELECT ROUND(5,234256),ROUND (4,7556656) FROM DUAL;

Ejercicio: Obtener el salario medio por departamento, redondeado a dos decimales de precisión.

Select numde, round(avg(salar+nvl(comis,0)),2 from temple


Group by numde;

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º SELECT SIGN(-4556) FROM DUAL;

2º SELECT SIGN(SALAR) FROM TEMPLE WHERE NOMEM=’SANTOS,SANCHO’;


1.1.9 SQRT(N). Esta función devuelve la raíz cuadrada.
Ejercicio: Obtener la raiz cuadrada de 23

SELECT SQRT(23)FROM DUAL;

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.

Select numde, TRUNK(avg(salar+nvl(comis,0)),2 from temple


Group by numde;

1.1.11 VARIANCE ([DISTINCT] VALOR) Devuelve la varianza de un conjunto de valares,


ignora los valores NULL. (es un concepto matematico).

Ejemplo: Obtener la varianza de los salarios

Select VARIANCE (salar) from temple;

1.2.-Funciones de grupos de valores.


Actúan sobre campos de una tabla: Son las que en sql las conocíamos como funciones colectivas

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

Create table alum(nombre varchar2(20) primary key


Eva1 number(2),
Eva2 number(2),
Eva3 number(2));

Insert into alum values(‘Pepe’,8,9,4);


Insert into alum values(‘Juan’,7,6,9);
Insert into alum values(‘Ana’,3,8,5);
Insert into alum values(‘Jose’,6,4,7);

Select * from alum;

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;

Select ‘El alumno’ ||nombre|| ‘ su nota mayor es ‘||GREATEST (eva1,eva2,eva3)


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 GREATEST (max(eva1),max(eva2),max(eva3)),


LEAST (max(eva1),max(eva2),max(eva3)),
AVG(eva1+eva2+eva3)/3,1
From alum;
2 FUNCIONES DE CADENA DE CARACTERES.
Trabajan con datos del tipo CHAR o VARCHAR2.

2.1.-Funciones que devuelven valores de carácter.

2.1.1 CHR(n). Devuelve el carácter ASCII cuyo valor decimal equivale a n.


Ejemplo: Obtener el character ascii del número 65 en decimal
Select chr(65) from dual;

2.1.2 CONCAT(CAD1, CAD2). Concatena cadena, es equivalente a .


Ejemplo: Obtener para cada empleado de la empresa la frase

El empleado <nombre_del_empleado> trabaja en el departamento


<nombre_departamento> con salario <salario>
SELECT ‘El empleado ’ || ,nomem,’ trabaja en el departamento ‘,nomde, ‘ con sueldo ‘,salar
From temple e, tdepto d
Where e.numde=d.numde;

SELECT CONCAT (‘El empleado ’ ,CONCAT (nomem,CONCAT(’ trabaja en el departamento ‘,


CONCAT (nomde, CONCAT( ‘ con sueldo ‘,salar)))))
From temple e, tdepto d
Where e.numde=d.numde;

SELECT ‘El empleado ’||nomem||’ trabaja en el departamento ‘||nomde|| ‘ con sueldo ‘||salar
From temple e, tdepto d
Where e.numde=d.numde;

2.1.3 LOWER (cad). Devuelve la cadena "cad" en minúsculas.


Ejemplo: Visualizar los nombres de los empleados en minusculas

SELECT LOWER(NOMEM) FROM TEMPLE;

2.1.4 UPPER (cad). Devuelve la cadena "cad" en mayúsculas.


Ejemplo: Visualizar los nombres de los empleados en mayusculas

SELECT UPPER( LOWER(NOMEM)) FROM TEMPLE;

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.

SELECT INITCAP('ROBERTO POZO INIGO') FROM TEMPLE;


Ejercicio: Visializar los nombres de los empleados de la tabla temple la primera letra de cada palabra en
mayúsculas el resto en minúsculas.

SELECT INITCAP(NOMEM) FROM TEMPLE;

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.

SELECT LPAD (NOMEM,25,’#’)FROM TEMPLE;

*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).

Nota: Se suele utilizar para ALINEAR NUMEROS POR 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.

SELECT RPAD (NOMEM,25,’#’)FROM TEMPLE;

*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?

SELECT RPAD( LPAD (NOMEM,25,’#’),30,’*’) FROM TEMPLE;

SELECT RPAD( LPAD (SALAR,4,’#’),5,’#’) FROM TEMPLE;

2.1.8 LTRIM (cad [,set]). Suprime un conjunto de caracteres a la izquierda de la cadena.


cad es la cadena de la que se quiere suprimir y set es la colección de caracteres a suprimir. Si
set se omite devuelve la cadena sin blancos a la izquierda.

Ejemplo: de la cadena 'ababababunidad V, FUNCIONES', suprimir la secuencia 'ab' por la


izquierda hasta encontrar un valor distinto.

SELECT LTRIM('ababababunidad V, FUNCIONES',’ab’) FROM DUAL;

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 '*********unidad V, FUNCIONES', suprimir la secuencia 'ab' por la


izquierda hasta encontrar un valor distinto.
SELECT LTRIM('********unidad V, FUNCIONES',’*’) FROM DUAL;

2.1.9 RTRIM (cad [,set]). Suprime un conjunto de caracteres a la derecha de la cadena. Si


set se omite devuelve la cadena sin blancos a la derecha.
Ejemplo: de la cadena 'unidad V, FUNCIONES**********', suprimir la secuencia '*' por la
derecha hasta encontrar un valor distinto.

Ejemplo: de la cadena 'FUNCIONES ', suprimir los espacios en blanco por la derecha
hasta encontrar un valor distinto.

2.1.10 REPLACE (cad, cadena_busqueda [, cadena_sustitucion]) Sustituye un carácter o


caracteres de una cadena con 0 o más caracteres. Devuelve cad con cada ocurrencia de
cadena_busqueda sustituida por cadena_sustitucion.

Ejemplo: Sustituir en la frase (‘ EL EMPLEADO PEPE TRABAJA EN INFORMATICA’ el


nombre PEPE por JUAN.

Select REPLACE (‘ EL EMPLEADO PEPE TRABAJA EN INFORMATICA’,’


PEPE’,’JUAN’) FROM DUAL;

*Donde pone Pepe lo sustituye por Juan

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.

Ejemplo: en la cadena EL SOL SALE POR EL ESTE, obtener 2 caracteres a partir de la


posición 8.

SELECT SUBSTR(‘EL SOL SALE POR EL ESTE’, 8, 2) FROM DUAL;


Ejercicio: Obtener la letra de un DNI
Select
SUBSTR(‘TRWAGMYFPDXBNJZSQVHLCKE’,
MOD(505453,23)+1, 1) FROM DUAL;

Ejercicio: Obtener la primera letra del apellido de los empleados de temple;

Select SUBSTR(nomem,1,1) from temple;


Ejercicio: Conocido el número del DNI (sin la letra), obtener la letra y visualizar del DNI
completo (numero+letra(en minúscula))
Select ‘1234567’||
SUBSTR(‘TRWAGMYFPDXBNJZSQVHLCKE’,
MOD(1234567,23)+1, 1) FROM DUAL;

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;

Select TRANSLATE(‘EL NOMBRE DE EMPLEADO PEPE TRABAJA’,’E’ ’B’,’A’ ‘C’ ) FROM


DUAL;

2.1.13 SOUNDEX(CAD). Devuelve la cadena de caracteres que contiene la representación fonética


de la cadena.
Puede utilizarse en ingles en palabras que se escriben de manera diferente y su pronunciación es muy
parecida.
Ejemplo:
Select SOUNDEX('SMYTHE'), SOUNDEX('SMITH')FROM DUAL;

Solucion:
SOUN SOUN
---- ----
S530 S530
2.2.-Funciones que devuelven valores numéricos

2.2.1 ASCII(cad) Devuelve el valor ASCII de la primera letra de la cadena "cad".


Ejemplo: Obtener el calor en ASCII de ‘A’
SELECT ASCII(69) FROM DUAL;
2.2.2 INSTR (cad1, cad2 [, comienzo [,m]])Esta función busca un conjunto
de caracteres en una cadena . Devuelve la posición de la enèsima ocurrencia
de cad1 en cad2 comenzando la búsqueda en la posición de comienzo, por omisión empieza buscando en la
posición 1.
Ejemplo: ?Obtener la segunda vez que te encuentras la cadena 'ta', en la frase ‘Vuelta ciclista de talavera’,
comenzando la busqueda a partir de la posición 3?.

SELECT INSTR(‘Vuelta ciclista de talavera’,'ta',3,2) FROM DUAL


(opcionales)
*Con el 10 y el 2, busca a partir de ese carácter (3), a partir de la cadena (ta), la segunda vez (2).

Ejemplo: Obtener posición en que se encuentra la primera vez la cadena 'ta', en la frase ‘Vuelta ciclista de
talavera’,

2.2.3 LENGTH (cad). Devuelve el número de caracteres de cad.


Ejemplo: Obener la longitud (Numero de caracteres) que tiene la frase 'Vuelta
ciclista de talavera'
SELECT LENGTH ( 'Vuelta ciclista de talavera') FROM DUAL;

Ejemplo: Obtener el nombre y su longitud de cada uno de los nombres de temple.


Select nomem, LENGTH (nomem) froM temple;

Ejercicios: Visualizar el nombre (sin apellido) de todos los empleados de temple.

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;

3 FUNCIONES PARA EL MANEJO DE FECHAS

En Oracle los campos donde se guardan fechas, deben de ser tipo DATE. Por omisión el formato que tiene
es ‘DD-MM-YY’

3.1 SYSDATE Devuelve la fecha del sistema.


Ejemplo: Obtener la fecha del sistema
SELECT SYSDATE FROM DUAL;

3.2 ADD_MONTHS (fecha,n) Devuelve la fecha "fecha" incrementada en "n" meses.


Ejemplo: Obtener la fecha del sistema, la fecha incrementada dos meses y la fecha restada dos meses.

Incrementar 5 meses la fecha12/05/16 y visualizarla

SELECT ADD_MONTHS(‘12/05/16’,5 ) FROM DUAL;

SELECT ADD_MONTHS(SYSDATE,5 ) FROM DUAL;


3.3 LAST_DAY (fecha) Devuelve la fecha del último día del mes que contiene "fecha".
Ejemplo: Obtener el ultimo dia del mes de la fecha ‘17/02/2016’.
Select LAST_DAY(‘17/02/2016’)from dual;
3.4 MONTHS_BETWEEN (fecha1,fecha2) Devuelve la diferencia en meses entre las
fechas "fecha1" y "fecha2".

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.

Select floor ((MONTHS_BETWEEN((sysdate,’18/01/98’))/12) FROM DUAL;

Ejercicio: Obtener el número de meses que tenemos a partir de la fecha de nacimiento y de la fecha del
sistema.

Select floor (MONTHS_BETWEEN(sysdate,’18/01/98’));

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).

Select next_day (sysdate,6) from dual;

Ejercicio: Si hoy es Martes (26/04/16) ¿qué fecha será el próximo viernes? Obtenerla.

Select next_day (‘26/04/16’,5) from dual;

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).

Formatos más utilizados:


Mascaras de formato numéricas
yy -año con dos dígitos
yyyy -año con cuatro dígitos
mm -mes con dos dígitos
dd -dia con dos dígitos

hh ó hh12 -hora formato 12 horas


hh24 -hora formato 24 horas
mi -minutos
ss -segundos
mascaras de formato de caracteres
year -año
month -nombre del mes
day -nombre del dia de la semana

ejercicios

ejemplo:
Partiendo de la fecha del sistema obtener la frase:
En Madrid, a <dia> de <mes> del año <año>

Select To_char (sysdate,’ ”En Madrid, a “ dd “ de “ mm “


del año “ yyyy’) from dual;

Ejercicio: Partiendo de la fecha del sistema obtener la frase:


hoy es <nombre_dia_semana>, <dia> de <nombre_mes> de <año>

Select To_char (sysdate,’ “hoy es “ day ”, “ dd “ de ”


mounth “ de “ year “ Siendo las “ hh “ horas” mi “minutos
“ ss ) from dual;
Ejercicio: Partiendo de la fecha del sistema obtener la frase:
En Madrid, a <dia> de <mes> del año <año>, siendo las <horas> horas <minutos> minutos <segundos>

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

Se pone sql> ALTER SESSION SET NLS_TERRITORY=SPAIN

Para cambiar el formato de la fecha


sql>ALTER SESSI ON SET NLS_DATE_FORMAT=’DD/month/YYYY HH24:MI:SS’
Probar
Select SYSDATE from DUAL;

Para cambiar el lenguaje utilizado para nombrar los meses


sql> ALTER SESSION SET NLS_DATE_LANGUAGE=spanish;

4.1.2 TO CHAR (numero , ‘formato’ ) Convierte un número (NUMBER) a tipo caracteres(VARCHAR2).

*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:

select to_char(244,’999999’)from dual;

s999 ó 999s -poner el signo al valor


-ejemplo:
select to_char(244,’s999999’), to_char(-244,’999999s’), to_char(-244,’s999999’) from dual;

*si lo pones ‘s999...’ Te pone su signo a la izquierda, si lo pones ‘999s...’ Te pone su signo a la derecha.

999D999 -devuelve el carácter decimal en la posición especificada


-ejemplo:
select to_char(234.545244,’99999D999999’)from dual;

999G999 -devuelve el carácter de los miles en la posición especificada


–ejemplo: select to_char(2333234.545244,’99G999G999D99’)from dual;

9,999 -devuelve la coma en las posición especificada


–ejemplo: select to_char(4.545,’ 9,999’)from dual;

9.999 -devuelve el punto en la posición especificada


–ejemplo: select to_char(24.54,’99D99’)from dual;

??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.2 TO_NUMBER(cadena, ‘formato‘). Transforma una cadena de caracteres en NUMBER. La


cadena ha de contener números, el carácter decimal o el signo menos a la izquierda, no debe haber espacios
entre los números ni espacios en blanco.
Los formatos más utilizados son los de to_char(numero,’formato’).
Ejemplo: Transfromar la cadena ‘2343242’ a numero (para posteriormente poder realizar operaciones
aritméticas)

Ejercicio: Transfromar la cadena ‘9.234.344,45’ a numero.

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’.

Obtener el nombre del mes de la cadena de caracteres ‘13012016’.

NOTA: Cambiar formato de la fecha (que el año aparezca con 4 números)

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=’.,’

2 Cambiar al siguiente formato de fecha


SQL> ALTER SESSION
SET NLS_DATE_FORMAT=’DD/MM/YYYY’;

---------------------------------------
SELECT TO_CHAR(TO_DATE(15032011,'DD/MM/YYYY'), ' DAY MONTH DD "FECHA" ') FROM
DUAL;

Adicional

Formato más utilizado tantos 9 como dígitos.


TO_CHAR(55,’9999’)
D. Devuelve el decimal en la posición especificada. 999D99
G. Devuelve el carácter de los miles en la posición especificada 99G999

TO_CHAR(84459964425, ‘999G999G9D99’)

SELECT TO_CHAR(8445996.4425, '99999G999G999D99') FROM DUAL;

D Decimal
G Miles

SQL> ALTER SESSION


SET NLS_NUMERIC_CHARACTERS=’,.’
‘’SQL> TO_CHAR(93843.85,’999’)

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.

5.2 VSIZE(EXPRESION). Devuelve el número de bites que genera la expresión.


ejemplo:
select vsize(nomem) from temple;

USER. Devuelve el nombre del usuario actual. (SHOW USER)


UID. Devuelve el número del usuario actual.

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:

ABS(n)= Devuelve el valor absoluto de (n).


CEIL(n)=Obtiene el valor entero inmediatamente superior o igual a "n".
FLOOT(n) = Devuelve el valor entero inmediatamente inferior o igual a "n".
MOD (m, n)= Devuelve el resto resultante de dividir "m" entre "n".
NVL (valor, expresión)= Sustituye un valor nulo por otro valor.
POWER (m, exponente)= Calcula la potencia de un numero.
ROUND (numero [, m])= Redondea números con el numero de dígitos de precisión indicados.
SIGN (valor)= Indica el signo del "valor".
SQRT(n)= Devuelve la raíz cuadrada de "n".
TRUNC (numero, [m])= Trunca números para que tengan una cierta cantidad de dígitos de precisión.
VAIRANCE (valor)= Devuelve la varianza de un conjunto de valores.

Funciones de grupos de valores:

AVG(n)= Calcula el valor medio de "n" ignorando los valores nulos.


COUNT (* | Expresión)= Cuenta el numero de veces que la expresión evalúa algún dato con valor no nulo.
La opción "*" cuenta todas las filas seleccionadas.
MAX (expresión)= Calcula el máximo.
MIN (expresión)= Calcula el mínimo.
SUM (expresión)= Obtiene la suma de los valores de la expresión.
GREATEST (valor1, valor2…)= Obtiene el mayor valor de la lista.
LEAST (valor1, valor2…)= Obtiene el menor valor de la lista.

Funciones que devuelven valores de caracteres:

CHR(n) = Devuelve el carácter cuyo valor en binario es equivalente a "n".


CONCAT (cad1, cad2)= Devuelve "cad1" concatenada con "cad2".
LOWER (cad)= Devuelve la cadena "cad" en minúsculas.
UPPER (cad)= Devuelve la cadena "cad" en mayúsculas.
INITCAP (cad)= Convierte la cadena "cad" a tipo titulo.
LPAD (cad1, n[,cad2])= Añade caracteres a la izquierda de la cadena hasta que tiene una cierta longitud.
RPAD (cad1, n[,cad2])= Añade caracteres a la derecha de la cadena hasta que tiene una cierta longitud.
LTRIM (cad [,set])= Suprime un conjunto de caracteres a la izquierda de la cadena.
RTRIM (cad [,set])= Suprime un conjunto de caracteres a la derecha de la cadena.
REPLACE (cad, cadena_busqueda [, cadena_sustitucion])= Sustituye un carácter o caracteres de una cadena
con 0 o mas caracteres.
SUBSTR (cad, m [,n])= Obtiene parte de una cadena.
TRANSLATE (cad1, cad2, cad3)= Convierte caracteres de una cadena en caracteres diferentes, según un
plan de sustitución marcado por el usuario.

Funciones que devuelven valores numéricos:

ASCII(cad)= Devuelve el valor ASCII de la primera letra de la cadena "cad".


INSTR (cad1, cad2 [, comienzo [,m]])= Permite una búsqueda de un conjunto de caracteres en una cadena
pero no suprime ningún carácter después.
LENGTH (cad)= Devuelve el numero de caracteres de cad.

Funciones para el manejo de fechas:

SYSDATE= Devuelve la fecha del sistema.


ADD_MONTHS (fecha, n)= Devuelve la fecha "fecha" incrementada en "n" meses.
LASTDAY (fecha)= Devuelve la fecha del último día del mes que contiene "fecha".
MONTHS_BETWEEN (fecha1, fecha2)= Devuelve la diferencia en meses entre las fechas "fecha1" y
"fecha2".
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".

Funciones de conversión:

TO_CHAR= Transforma un tipo DATE ó NUMBER en una cadena de caracteres.


TO_DATE= Transforma un tipo NUMBER ó CHAR en DATE.
TO_NUMBER= Transforma una cadena de caracteres en NUMBER.