Usar funciones de una sola fila
Uso de funciones de fila única para personalizar la salida
Oracle SQL proporciona una rica biblioteca de funciones integradas que se pueden emplear para diversas tareas. Las capacidades esenciales de una función pueden ser la conversión de casos de cadenas, operaciones en cadenas o subcadenas, cálculos matemáticos en datos numéricos y operaciones de fecha en valores de tipo de fecha. Las funciones SQL opcionalmente toman argumentos del usuario y devuelven un valor de forma obligatoria.
En una categoría más amplia, hay dos tipos de funciones: -
Single Row functions- Las funciones de una sola fila son las que trabajan en una sola fila y devuelven una salida por fila. Por ejemplo, las funciones de conversión de longitud y caso son funciones de una sola fila.
Multiple Row functions - Las funciones de filas múltiples funcionan en grupos de filas y devuelven un resultado para el conjunto completo de filas. También se conocen como funciones de grupo.
Funciones de una sola fila
Las funciones de una sola fila pueden ser funciones de caracteres, funciones numéricas, funciones de fecha y funciones de conversión. Tenga en cuenta que estas funciones se utilizan para manipular elementos de datos. Estas funciones requieren uno o más argumentos de entrada y operan en cada fila, por lo que devuelven un valor de salida para cada fila. El argumento puede ser una columna, un literal o una expresión. Las funciones de una sola fila se pueden utilizar en la instrucción SELECT, WHERE y la cláusula ORDER BY. Las funciones de una sola fila pueden ser:
General functions- Normalmente contiene funciones de manejo NULL. Las funciones de la categoría son NVL, NVL2, NULLIF, COALESCE, CASE, DECODE.
Case Conversion functions- Acepta la entrada de caracteres y devuelve un valor de carácter. Las funciones de la categoría son UPPER, LOWER e INITCAP.
La función UPPER convierte una cadena en mayúsculas.
La función LOWER convierte una cadena a minúsculas.
La función INITCAP convierte solo los alfabetos iniciales de una cadena a mayúsculas.
Character functions- Acepta la entrada de caracteres y devuelve un número o valor de carácter. Las funciones de la categoría son CONCAT, LENGTH, SUBSTR, INSTR, LPAD, RPAD, TRIM y REPLACE.
La función CONCAT concatena dos valores de cadena.
La función LENGTH devuelve la longitud de la cadena de entrada.
La función SUBSTR devuelve una parte de una cadena desde un punto de inicio dado hasta un punto final.
La función INSTR devuelve la posición numérica de un carácter o una cadena en una cadena determinada.
Las funciones LPAD y RPAD rellenan la cadena dada hasta una longitud específica con un carácter dado.
La función TRIM recorta la entrada de la cadena desde el principio o el final.
La función REPLACE reemplaza los caracteres de la cadena de entrada con un carácter dado.
Date functions- Las operaciones aritméticas de fecha devuelven la fecha o los valores numéricos. Las funciones de la categoría son MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY, ROUND y TRUNC.
La función MONTHS_BETWEEN devuelve el recuento de meses entre las dos fechas.
La función ADD_MONTHS agrega 'n' número de meses a una fecha de entrada.
La función NEXT_DAY devuelve el día siguiente a la fecha especificada.
La función LAST_DAY devuelve el último día del mes de la fecha de entrada.
Las funciones ROUND y TRUNC se utilizan para redondear y truncar el valor de la fecha.
Number functions- Acepta entrada numérica y devuelve valores numéricos. Las funciones de la categoría son ROUND, TRUNC y MOD.
Las funciones ROUND y TRUNC se utilizan para redondear y truncar el valor del número.
MOD se utiliza para devolver el resto de la operación de división entre dos números.
Ilustraciones
Funciones generales
La consulta SELECT a continuación demuestra el uso de la función NVL.
SELECT first_name, last_name, salary, NVL (commission_pct,0)
FROM employees
WHERE rownum < 5;
FIRST_NAME LAST_NAME SALARY NVL(COMMISSION_PCT,0)
-------------------- ------------------------- ---------- ---------------------
Steven King 24000 0
Neena Kochhar 17000 0
Lex De Haan 17000 0
Alexander Hunold 9000 0
Funciones de conversión de casos
La consulta SELECT a continuación demuestra el uso de funciones de conversión de casos.
SELECT UPPER (first_name), INITCAP (last_name), LOWER (job_id)
FROM employees
WHERE rownum < 5;
UPPER(FIRST_NAME) INITCAP(LAST_NAME) LOWER(JOB_
-------------------- ------------------------- ----------
STEVEN King ad_pres
NEENA Kochhar ad_vp
LEX De Haan ad_vp
ALEXANDER Hunold it_prog
Funciones de personajes
La consulta SELECT a continuación demuestra el uso de la función CONCAT para concatenar dos valores de cadena.
SELECT CONCAT (first_name, last_name)
FROM employees
WHERE rownum < 5;
CONCAT(FIRST_NAME,LAST_NAME)
--------------------------------
EllenAbel
SundarAnde
MozheAtkinson
DavidAustin
La consulta SELECT a continuación demuestra el uso de las funciones SUBSTR e INSTR. La función SUBSTR devuelve la parte de la cadena de entrada desde la 1ª a la 5ª posición. La función INSTR devuelve la posición numérica del carácter 'a' en el primer nombre.
SELECT SUBSTR (first_name,1,5), INSTR (first_name,'a')
FROM employees
WHERE rownum < 5;
SUBST INSTR(FIRST_NAME,'A')
----- ---------------------
Ellen 0
Sunda 5
Mozhe 0
David 2
La consulta SELECT a continuación demuestra el uso de LPAD y RPAD para imprimir de forma bonita la información del empleado y del trabajo.
SELECT RPAD(first_name,10,'_')||LPAD (job_id,15,'_')
FROM employees
WHERE rownum < 5;
RPAD(FIRST_NAME,10,'_')||
-------------------------
Steven____________AD_PRES
Neena_______________AD_VP
Lex_________________AD_VP
Alexander_________IT_PROG
Funciones numéricas
La consulta SELECT a continuación demuestra el uso de las funciones ROUND y TRUNC.
SELECT ROUND (1372.472,1)
FROM dual;
ROUND(1372.472,1)
-----------------
1372.5
SELECT TRUNC (72183,-2)
FROM dual;
TRUNC(72183,-2)
---------------
72100
Operaciones aritméticas de fecha
La consulta SELECT a continuación muestra una función aritmética de fecha donde se realiza la diferencia entre la fecha de contratación del empleado y la fecha del sistema.
SELECT employee_id, (sysdate - hire_date) Employment_days
FROM employees
WHERE rownum < 5;
EMPLOYEE_ID EMPLOYMENT_DAYS
----------- ---------------
100 3698.61877
101 2871.61877
102 4583.61877
103 2767.61877
Funciones de fecha
La consulta SELECT a continuación demuestra el uso de las funciones MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY y LAST_DAY.
SELECT employee_id, MONTHS_BETWEEN (sysdate, hire_date) Employment_months
FROM employees
WHERE rownum < 5;
EMPLOYEE_ID EMPLOYMENT_MONTHS
----------- -----------------
100 121.504216
101 94.3751837
102 150.633248
103 90.9558289
SELECT ADD_MONTHS (sysdate, 5), NEXT_DAY (sysdate), LAST_DAY (sysdate)
FROM dual;
ADD_MONTH NEXT_DAY( LAST_DAY(
--------- --------- ---------
01-JAN-14 05-AUG-13 31-AUG-13