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 HR es 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

SELECT

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)