You are on page 1of 2

GRADO EN INGENIERÍA INFORMÁTICA

Asignatura: BASES DE DATOS


ALGUNAS FUNCIONES del SQL de ORACLE

Algunas funciones del SQL de Oracle que pueden resultar de ayuda para la resolución de las prácticas de
bases de datos, son las siguientes:
1.- NVL()
2.- TO_CHAR()
3.- TO_DATE()
4.- RPAD() y LPAD()

1. La función del SQL de Oracle llamada NVL (Null VaLue) permite mostrar el valor que se desee en cierta
columna del resultado de una consulta, en lugar de un NULL.
La función NVL tiene dos argumentos: NVL(columna, valor). El parámetro 'columna' corresponde a una
columna de alguna de las tablas del FROM. El segundo argumento 'valor' debe ser del mismo tipo de
datos que la 'columna' (primer argumento).

Un ejemplo:
SELECT codigo_producto, NVL(descripcion, 'SIN DESCRIBIR') FROM PRODUCTO;
Mostraría para cada producto, su código y su descripción, pero si algún producto tuviera un nulo en la
columna descripcion, entonces mostraría la cadena SIN DESCRIBIR.

Otro ejemplo:
SELECT codigo_producto, NVL(unidades_almacen, 0) FROM PRODUCTO;
Mostraría para cada producto, su código y el número de unidades que hay en el almacén, pero si algún
producto tuviera un nulo en la columna unidades_almacen, entonces mostraría un cero.

Si en vez de un número, se desea mostrar una cadena de caracteres, habría que pasarle el primer
parámetro convertido a caracteres, usando la función TO_CHAR de Oracle:
SELECT codigo_producto, NVL(TO_CHAR(unidades_almacen), 'NADA') FROM PRODUCTO;

2.- La función del SQL de Oracle TO_CHAR (datetime, fmt) convierte un valor (el contenido de cierta
columna, por ejemplo) de tipo DATE (parámetro datetime, que también puede ser de cualquier otro tipo
de datos relacionado con las fechas y marcas de tiempo) a un valor del tipo de datos VARCHAR2, en el
formato especificado por el parámetro fmt.
Si se omite fmt, entonces la fecha es convertida a un VARCHAR2 en el formato de fecha por defecto.
Ejemplos:
SELECT to_char(sysdate, 'yyyy/mm/dd') -- devuelve ' 2012/03/09'
FROM DUAL;

SELECT to_char(sysdate, 'Month DD, YYYY') --devuelve ' Marzo 09, 2012'
FROM DUAL;

SELECT to_char(sysdate, 'FMMonth DD, YYYY') --devuelve ' Marzo 9, 2012'


FROM DUAL;

SELECT to_char(sysdate, 'MON DDth, YYYY') --devuelve ' MAR 09TH, 2012'
FROM DUAL;

SELECT to_char(sysdate, 'FMMON DDth, YYYY') --devuelve ' MAR 9TH, 2012'
FROM DUAL;

SELECT to_char(sysdate, 'FMMon ddth, YYYY') --devuelve ' Mar 9th, 2012'
FROM DUAL;

SELECT to_char(sysdate, ‘DAY’), to_char(sysdate, ‘dd’) -- devuelve 2 columnas:(‘VIERNES’,‘09’)


FROM DUAL;

1
SELECT to_char(sysdate, ‘MONTH’), to_char(sysdate, ‘mm’) -- devuelve 2 columnas:(‘MARZO’,‘03’)
FROM DUAL;

SELECT to_char(sysdate, 'year'),


to_char(sysdate, 'yy') -- devuelve 2 columnas:(‘twenty twelve’,‘12’)
FROM DUAL;

3.- La función del SQL de Oracle TO_DATE(cadena, fmt) convierte una cadena de caracteres (CHAR,
VARCHAR2, NCHAR, o NVARCHAR2), escrita en cierto formato (indicado por el parámetro fmt), a un valor
del tipo de datos DATE. Si se omite el parámetro fmt, entonces la cadena de caracteres debe estar escrita
en el formato de fechas por defecto.
Ejemplos:

to_date('2012/03/09', 'yyyy/mm/dd')

to_date('070903', 'MMDDYY')

to_date('20020315', 'yyyymmdd')

NOTA IMPORTANTE: Los diferentes formatos numéricos y de fechas (parámetro ‘fmt’) aparecen en el
documento ‘format-models.pdf’.

4.- Las funciones del SQL de Oracle RPAD(expr1 , n [, expr2 ]) y LPAD(expr1, n [, expr2 ]) devuelven expr1,
rellenada a la derecha (RPAD) o a la izquierda (LPAD) hasta una longitud de n caracteres con lo indicado en
la expr2, replicado tantas veces como sea necesario.

Estas funciones son útiles para dar formato a la salida de una consulta, por ejemplo, o a lo que se va a
imprimir mediante una función del paquete DBMS_OUTPUT.

Tanto expr1 como expr2 pueden ser de los tipos de datos CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, o
NCLOB. El string devuelto es del mismo tipo de datos que expr1. El argumento n debe ser un entero de tipo
NUMBER o un valor que pueda ser implícitamente convertido a un entero NUMBER.
El argumento expr1 no puede ser NULL.
Si no se especifica expr2, entonces por defecto se usa un espacio en blanco.
Si la longitud de expr1 es mayor que n, la función devuelve la porción de expr1 que cabe en n.
El argumento n es la longitud total (el número de caracteres) del valor devuelto.

Ejemplo: rellenar a la izquierda una cadena con asteriscos y puntos, como resultado de una consulta:
SELECT LPAD('Page 1',15,'*.') "LPAD example" FROM DUAL;
-- Resultado:
LPAD example
---------------
*.*.*.*.*Page 1

Otro ejemplo: uso de RPAD y LPAD dentro de llamadas a función del paquete DBMS_OUTPUT.
SET serveroutput ON;
BEGIN
DBMS_OUTPUT.PUT_LINE(RPAD('Blancos', 15) || 'Aquí van blancos');
DBMS_OUTPUT.PUT_LINE(RPAD('Puntos', 15, '.') || 'Aquí van puntos');
DBMS_OUTPUT.PUT_LINE(LPAD('Guiones', 15, '-') || 'Aquí van guiones');
DBMS_OUTPUT.PUT_LINE(LPAD('Esta cadena es demasiado larga', 15, '*') || 'FIN');
END;
-- Resultado de la ejecución del bloque anónimo PL/SQL:
Blancos Aquí van blancos
Puntos.........Aquí van puntos
--------GuionesAquí van guiones
Esta cadena es FIN

You might also like