Databases
T01-007-02 Funciones de cadenas, que devuelven cadenas
Enunciado
A continuación se muestran una tabla con algunas de las funciones de cadenas de caracteres de uso más común junto con el resultado que se obtiene con su uso.
Función
Descripción
CHR (n)Devuelve el carácter equivalente a n.
CONCAT (cad1, cad2)Devuelve cad1 concatenada con cad2. equivalente a ||.
LOWER (cad)Devuelve la cadena convertida a minúsculas.
UPPER (cad)Devuelve la cadena convertida a mayúsculas.
INITCAP (cad)Devuelve cad1 con la primera letra de cada palabra en mayúsculas.
LPAD (cad1, n [, cad2])Rellena cad1 por la izquierda con cad2 o blancos hasta llegar a n.
RPAD (cad1, n [,cad2])Rellena cad1 por la derecha con cad2 o blancos hasta llegar a n.
LTRIM (cad, [,set])Suprime un conjunto de caracteres (set ) o blancos a la izquierda.
RTRIM (cad [,set])Suprime un conjunto de caracteres (set ) o blancos a la derecha.
REPLACE (cad, cad_búsqueda [,cadena-sustitución] )Devuelve cad con cada cad-búsqueda sustituida por cadena-
sustitución.
SUBSTR (cad, m [, n])Devuelve una subcadena de cad de longitud n desde el carácter
posición m. Si m es negativo, comienza por el final.
TRANSLATE (cad1, cad2, cad3)Devuelve cad1 con los caracteres cad2 sustituidos por cad3.
La lista completa de funciones la podéis obtener de la documentación de Funciones de cadenas que devuelven cadenas en Oracle.
Ejemplo:
Comenzaremos los ejemplos con la función
CONCAT(cad1, cad2), la cual devuelve una cadena de caracteres compuesta por la concatenación de las dos cadenas que se envían como argumentos, en el mismo orden en el que se envían.Suponiendo que el domio de la empresa
HRes hr.com, vamos a generarles a los programadores su dirección completa de correo electrónico:
SELECT CONCAT(EMAIL, '@hr.com') AS "CORREO ELECTRÓNICO"
FROM HR.employees
WHERE JOB_ID = 'IT_PROG'
CORREO ELECTRÓNICO
AHUNOLD@hr.com
BERNST@hr.com
DAUSTIN@hr.com
VPATABAL@hr.com
DLORENTZ@hr.com
Normalmente, las direcciones de correo electrónico aparecen en minúsculas, por lo que a la sentencia anterior le vamos a añadir la función
LOWER(cadena):
SELECT CONCAT(LOWER(EMAIL), '@hr.com') AS "CORREO ELECTRÓNICO"
FROM HR.employees
WHERE JOB_ID = 'IT_PROG'
CORREO ELECTRÓNICO
ahunold@hr.com
bernst@hr.com
daustin@hr.com
vpatabal@hr.com
dlorentz@hr.com
El correo electrónico de los empleados ya está almacenado en un atributo de la tabla, pero está generado con la primera letra del nombre concatenada con el apellido, de la siguiente forma:
SELECT FIRST_NAME, LAST_NAME,
CONCAT(LOWER(CONCAT(SUBSTR(FIRST_NAME, 1, 1), LAST_NAME)), '@hr.com') AS "CORREO ELECTRÓNICO"
FROM HR.employees
WHERE JOB_ID = 'IT_PROG'
CORREO ELECTRÓNICO
ahunold@hr.com
bernst@hr.com
daustin@hr.com
vpataballa@hr.com
dlorentz@hr.com
En realidad, si el apellido es muy largo, se cogen únicamente los 7 primeros caracteres, quedando la sentencia de la siguiente forma:
SELECT FIRST_NAME, LAST_NAME,
CONCAT(
LOWER(
CONCAT(
SUBSTR(FIRST_NAME, 1, 1),
SUBSTR(LAST_NAME, 1, 7)
)
),
'@hr.com'
)
AS "CORREO ELECTRÓNICO"
FROM HR.employees
WHERE JOB_ID = 'IT_PROG'
CORREO ELECTRÓNICO
ahunold@hr.com
bernst@hr.com
daustin@hr.com
vpatabal@hr.com
dlorentz@hr.com
MUY IMPORTANTE
La resolución de este ejemplo demuestra cómo alcanzar la solución de algunos enunciados requiere de un refinamiento sucesivo de la solución propuesta. Es decir, ir planteando sentencias cuyo resultado se va acercando progresivamente a la solución requerida.
Ejercicio:
Muestra, en una sola columna, el nombre y apellido de los programadores, en el formato que se muestra en el OUTPUT.
Ordena el resultado alfabéticamente por el apellido.
Tipo
Solución
SELECT CONCAT(CONCAT(LAST_NAME, ', '), FIRST_NAME) AS "NOMBRE COMPLETO"
FROM HR.employees
WHERE JOB_ID = 'IT_PROG'
ORDER BY LAST_NAME
Prueba
LibrerÃas (Onfly databases)

