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