Funciones Internas de Oracle

download Funciones Internas de Oracle

of 6

Transcript of Funciones Internas de Oracle

Funciones de CadenaLas siguientes son algunas de las funciones que ofrece Oracle para trabajar con cadenas de caracteres: - To_char(argumento): Convierte un numero o fecha a cadena de caracteres. Ej: select to_char(sysdate,'dd/mm/yyyy') from dual

NVL (expr1, expr2)

Decode: es un if dentro de un select, devuelve un valor si la condicion evaluada es tru o false en caso contrario. Case: Lo mismo que el caso anterior, pero mas completo.

SELECT cedulaEmpleado, nombreEmpleado, codigoCargo, CASE codigoCargo WHEN secretaria' THEN 300000* 1.5 WHEN contador' THEN 300000* 2 WHEN mensajero' THEN 300000* 1.2 WHEN celador' THEN 300000* 1.8 ELSE 400000 END salarioDevengado FROM empleados; SELECT employee_id, last_name, manager_id FROM employees CONNECT BY PRIOR employee_id = manager_id; SELECT last_name, employee_id, manager_id, LEVEL FROM employees START WITH employee_id = 100 CONNECT BY PRIOR employee_id = manager_id;

- chr(x): retorna un caracter equivalente al cdigo enviado como argumento "x". Ejemplo:select chr(65) from dual;-- retorna 'A'. select chr(100) from dual;-- retorna 'd'.

- concat(cadena1,cadena2): concatena dos cadenas de caracteres; es equivalente al operador ||. Ejemplo:select concat('Buenas',' tardes') from dual;--retorna 'Buenas tardes'.

- initcap(cadena): retorna la cadena enviada como argumento con la primera letra (letra capital) de cada palabra en mayscula. Ejemplo:select initcap('buenas tardes alumno') from dual;--retorna 'Buenas Tardes Alumno'.

- lower(cadena): retorna la cadena enviada como argumento en minsculas. "lower" significa reducir en ingls. Ejemplo:select lower('Buenas tardes ALUMNO') from dual;--retorna "buenas tardes alumno".

- upper(cadena): retorna la cadena con todos los caracteres en maysculas. Ejemplo:select upper('www.oracle.com') from dual;-- 'WWW.ORACLE.COM'

- lpad(cadena,longitud,cadenarelleno): retorna la cantidad de caracteres especificados por el argumento "longitud", de la cadena enviada como primer argumento (comenzando desde el primer caracter); si "longitud" es mayor que el tamao de la cadena enviada, rellena los espacios restantes con la cadena enviada como tercer argumento (en caso de omitir el tercer argumento rellena con espacios); el relleno comienza desde la izquierda. Ejemplos:select lpad('alumno',10,'xyz') from dual;-- retorna 'xyzxalumno' select lpad('alumno',4,'xyz') from dual;-- retorna 'alum'

- rpad(cadena,longitud,cadenarelleno): retorna la cantidad de caracteres especificados por el argumento "longitud", de la cadena enviada como primer argumento (comenzando desde el primer caracter); si "longitud" es mayor que el tamao de la cadena enviada, rellena los espacios restantes con la cadena enviada como tercer argumento (en caso de omitir el tercer argumento rellena con espacios); el relleno comienza desde la derecha (ltimo caracter). Ejemplos:select rpad('alumno',10,'xyz') from dual;-- retorna 'alumnoxyzx' select rpad('alumno',4,'xyz') from dual;-- retorna 'alum'

- ltrim(cadena1,cadena2): borra todas las ocurrencias de "cadena2" en "cadena1", si se encuentran al comienzo; si se omite el segundo argumento, se eliminan los espacios. Ejemplo:select ltrim('la casa de la cuadra','la') from dual;-- ' casa de la cuadra' select ltrim(' es la casa de la cuadra','la') from dual;-- no elimina ningn caracter select ltrim(' la casa') from dual;-- 'la casa'

- rtrim(cadena1,cadena2): borra todas las ocurrencias de "cadena2" en "cadena1", si se encuentran por la derecha (al final de la cadena); si se omite el segundo argumento, se borran los espacios. Ejemplo:select rtrim('la casa lila','la') from dual;-- 'la casa li' select rtrim('la casa lila ','la') from dual;-- no borra ningn caracter select rtrim('la casa lila ') from dual; --'la casa lila'

- trim(cadena): retorna la cadena con los espacios de la izquierda y derecha eliminados. "Trim"

significa recortar. Ejemplo:select trim(' oracle ') from dual;--'oracle'

- replace(cadena,subcade1,subcade2): retorna la cadena con todas las ocurrencias de la subcadena de reemplazo (subcade2) por la subcadena a reemplazar (subcae1). Ejemplo:select replace('xxx.oracle.com','x','w') from dual;

retorna "www.oracle.com'. - substr(cadena,inicio,longitud): devuelve una parte de la cadena especificada como primer argumento, empezando desde la posicin especificada por el segundo argumento y de tantos caracteres de longitud como indica el tercer argumento. Ejemplo:select substr('www.oracle.com',1,10) from dual;-- 'www.oracle' select substr('www.oracle.com',5,6) from dual;-- 'oracle'

- length(cadena): retorna la longitud de la cadena enviada como argumento. "lenght" significa longitud en ingls. Ejemplo:select length('www.oracle.com') from dual;-- devuelve 14.

- instr (cadena,subcadena): devuelve la posicin de comienzo (de la primera ocurrencia) de la subcadena especificada en la cadena enviada como primer argumento. Si no la encuentra retorna 0. Ejemplos:select instr('Jorge Luis Borges','or') from dual;-- 2 select instr('Jorge Luis Borges','ar') from dual;-- 0, no se encuentra

- translate(): reemplaza cada ocurrencia de una serie de caracteres con otra serie de acracteres. La diferencia con "replace" es que aquella trabaja con cadenas de caracteres y reemplaza una cadena completa por otra, en cambio "translate" trabaja con caracteres simples y reemplaza varios. En el siguiente ejemplo se especifica que se reemplacen todos los caracteres "O" por el caracter "0", todos los caracteres "S" por el caracter "5" y todos los caracteres "G" por "6":select translate('JORGE LUIS BORGES','OSG','056') from dual;--'J0R6E LUI5 B0R6E5'

Se pueden emplear estas funciones enviando como argumento el nombre de un campo de tipo caracter.

Funciones NumericasCreamos la tabla:create table empleados( legajo number(5), documento char(8) not null, nombre varchar2(30) not null, domicilio varchar2(30), sueldo number(6,2), hijos number(2), primary key (legajo) );

Ingresamos algunos registros:insert into empleados values(1,'22333444','Ana Acosta','Avellaneda 213',870.79,2);

insert into empleados values(20,'27888999','Betina Bustos','Bulnes 345',950.85,1); insert into empleados values(31,'30111222','Carlos Caseres','Caseros 985',1190,0); insert into empleados values(39,'33444555','Daniel Duarte','Dominicana 345',1250.56,3);

Vamos a mostrar los sueldos de los empleados redondeando el valor hacia abajo y luego hacia arriba (empleamos "floor" y "ceil"):select floor(sueldo) as "sueldo hacia abajo", ceil(sueldo) as "sueldo hacia arriba" from empleados;

Mostramos los nombre de cada empleado, su respectivo sueldo, y el sueldo redondeando el valor a entero ("round") y truncado a entero ("trunc"):select nombre, sueldo, round(sueldo) as "sueldo redondeado", trunc(sueldo) as "sueldo truncado" from empleados;

Note que los valores devueltos segn la funcin empleada, son diferentes. Mostramos el resultado de "2 elevado a la potencia 5" ("power"):select power(2,5) from dual;

Retorna el valor 32. Mostramos el resto de la divisin "1234 / 5" ("mod"):select mod(1234,5) from dual;

Devuelve el valor 4. Calculamos la raz cuadrada de 81:select sqrt(81) from dual;

Retorna 9. To_Number(cadena): Convierte una cadena a numero. Ej: select to_number('150') from dual

Funciones de Fecha Creamos la tabla:create table libros( titulo varchar2(40) not null, autor varchar2(20) default 'Desconocido', editorial varchar2(20), edicion date, precio number(6,2) );

Ingresamos algunos registros:insert into libros values('El aleph','Borges','Emece','10/10/1980',25.33); insert into libros values('Java en 10 minutos','Mario Molina','Siglo

XXI','05/05/2000',50.65); insert into libros values('Alicia en el pais de las maravillas','Lewis Carroll','Emece','08/09/2000',19.95); insert into libros values('Aprenda PHP','Mario Molina','Siglo XXI','02/04/2000',45);

Mostramos el ttulo del libro y el ao de edicin:select titulo, extract (year from edicion) from libros;

Mostramos el ttulo del libro y el mes de edicin:select titulo, extract (month from edicion) from libros;

Mostramos el ttulo del libro y los aos que tienen de editados:select titulo, extract(year from sysdate)-extract(year from edicion) as "aos de editado" from libros;

Mostramos los ttulos de los libros que se editaron en el ao 2000:select titulo from libros where extract(year from edicion)=2000;

Calcule 3 meses luego de la fecha actual empleando ""add_months":select add_months(sysdate,3) from dual;

Muestre la fecha del primer martes desde la fecha actual:select next_day(sysdate,'martes') from dual;

Muestre la fecha que ser 15 das despus de "24/08/2007" empleando el operador "+":select to_date('24/08/2007')+15 from dual;

Retorna 08/09/07. Muestre la fecha que 20 das antes del "12/08/2007" empleando el operador "-":select to_date('12/08/2007')-20 from dual;

Retorna 23/07/07.

MONHTS_BETWEEN (fecha1, fecha2) Nmero de meses entre dos fechas. El resultado puede ser positivo o negativo. ADD_MONTHS (fecha, n) Aade n meses a fecha, segn calendario. N debe de ser un nmero entero y puede ser negativo. NEXT_DAY (fecha, caracter) Devuelve la fecha del da especificado (carcter) siguiente a fecha. Carcter puede ser un nmero representando un da o una cadena de caracteres, p.ej. FRIDAY.

LAST_DAY (fecha) Devuelve la fecha del ltimo da del mes que contiene fecha. ROUND (fecha [,fmt]) Cuando no se especifica ningn formato, devuelve la fecha del primer da del mes contenido en fecha. Si fmt=YEAR, encuentra el primer da del ao. TRUNC (fecha [,fmt]) Devuelve la fecha con la porcin del da truncado en la unidad especificada por el modelo de formato fmt. Si se omite el formato, laf echa se trunca en el da ms prximo.