Oracle SQL proporciona un amplio conjunto de funciones para trabajar con datos de forma eficiente. Este artículo ofrece ejemplos prácticos para entender y utilizar funciones esenciales organizadas por categorías: conversión, manejo de fechas, cadenas y operaciones numéricas.
1. Funciones de Decodificación y Comparación
DECODE
: Proporciona una lógica condicional similar a unCASE
en otras bases de datos.SELECT DECODE(JOB_ID, 'IT_PROG', 'Developer', 'SA_MAN', 'Sales Manager', 'Other') AS JOB_DESCRIPTION FROM EMPLOYEES;
2. Funciones de Información del Usuario
USER
: Devuelve el nombre del usuario actual.SELECT USER AS CURRENT_USER FROM DUAL;
UID
: Devuelve el identificador único del usuario.SELECT UID AS USER_ID FROM DUAL;
3. Funciones de Conversión
TO_CHAR
: Convierte números o fechas a cadenas formateadas.SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') AS FORMATTED_DATE FROM DUAL; SELECT TO_CHAR(12345.67, '99999.99') AS FORMATTED_NUMBER FROM DUAL;
TO_DATE
: Convierte una cadena a un formato de fecha.SELECT TO_DATE('2024-11-25', 'YYYY-MM-DD') AS DATE_VALUE FROM DUAL;
TO_NUMBER
: Convierte cadenas a números.SELECT TO_NUMBER('12345.67') AS NUMBER_VALUE FROM DUAL;
4. Funciones de Manejo de Fechas
SYSDATE
: Devuelve la fecha y hora actuales.SELECT SYSDATE AS CURRENT_DATE FROM DUAL;
ADD_MONTHS
: Añade o resta meses a una fecha.SELECT ADD_MONTHS(SYSDATE, 6) AS FUTURE_DATE FROM DUAL;
LAST_DAY
: Obtiene el último día del mes de una fecha.SELECT LAST_DAY(SYSDATE) AS END_OF_MONTH FROM DUAL;
MONTHS_BETWEEN
: Calcula la diferencia en meses entre dos fechas.SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2024-01-01', 'YYYY-MM-DD')) AS MONTHS_DIFF FROM DUAL;
NEXT_DAY
: Encuentra el próximo día de la semana especificado.SELECT NEXT_DAY(SYSDATE, 'FRIDAY') AS NEXT_FRIDAY FROM DUAL;
5. Funciones de Cadenas
CHR
yASCII
: Convierte entre valores ASCII y caracteres.SELECT CHR(65) AS CHARACTER_A, ASCII('A') AS ASCII_VALUE FROM DUAL;
CONCAT
: Une dos cadenas.SELECT CONCAT('Hello', ' World') AS GREETING FROM DUAL;
LOWER
,UPPER
,INITCAP
: Convierte cadenas a minúsculas, mayúsculas o título.SELECT LOWER('HELLO'), UPPER('hello'), INITCAP('hello world') FROM DUAL;
LPAD
,RPAD
: Rellena cadenas con caracteres.SELECT LPAD('123', 5, '0') AS PADDED_LEFT, RPAD('123', 5, '*') AS PADDED_RIGHT FROM DUAL;
SUBSTR
: Extrae una subcadena.SELECT SUBSTR('HELLO WORLD', 1, 5) AS SUBSTRING FROM DUAL;
INSTR
: Encuentra la posición de una subcadena.SELECT INSTR('HELLO WORLD', 'WORLD') AS POSITION FROM DUAL;
LENGTH
: Devuelve la longitud de una cadena.SELECT LENGTH('HELLO') AS STRING_LENGTH FROM DUAL;
6. Funciones Numéricas
ABS
ySIGN
: Devuelve el valor absoluto o el signo de un número.SELECT ABS(-10) AS ABSOLUTE_VALUE, SIGN(-10) AS SIGN_VALUE FROM DUAL;
CEIL
yFLOOR
: Redondeo hacia arriba o abajo.SELECT CEIL(10.2) AS CEIL_VALUE, FLOOR(10.8) AS FLOOR_VALUE FROM DUAL;
MOD
: Calcula el residuo de una división.SELECT MOD(10, 3) AS MOD_VALUE FROM DUAL;
ROUND
yTRUNC
: Redondea o trunca números.SELECT ROUND(123.456, 2) AS ROUNDED, TRUNC(123.456, 2) AS TRUNCATED FROM DUAL;
POWER
ySQRT
: Calcula potencias y raíces cuadradas.SELECT POWER(2, 3) AS POWER_RESULT, SQRT(16) AS SQUARE_ROOT FROM DUAL;
7. Funciones de Agregación
AVG
,COUNT
,MAX
,MIN
,SUM
:SELECT AVG(SALARY) AS AVERAGE_SALARY, MAX(SALARY) AS MAX_SALARY, MIN(SALARY) AS MIN_SALARY, SUM(SALARY) AS TOTAL_SALARY FROM EMPLOYEES;
VARIANCE
: Calcula la varianza.SELECT VARIANCE(SALARY) AS SALARY_VARIANCE FROM EMPLOYEES;
8. Funciones de Comparación
GREATEST
yLEAST
:SELECT GREATEST(10, 20, 30) AS MAX_VALUE, LEAST(10, 20, 30) AS MIN_VALUE FROM DUAL;
Estas funciones son fundamentales para trabajar con datos en Oracle SQL. Cada una cumple un propósito específico y puede combinarse para crear consultas más avanzadas y optimizadas. ¡Experimenta con estos ejemplos para mejorar tus habilidades!