12th Jun 2024 Lectura de 13 minutos Funciones de Cadena SQL: Una Visión Completa Martyna Sławińska funciones de cadenas de SQL manipulación de cadenas Índice Lista de Funciones de Cadena SQL Funciones de cadena SQL - Ejemplos Concatenación con || Comparación con <, >, <=, >=, =, <>, != LIKE CONCAT() CONCAT_WS() IZQUIERDA() LONGITUD() LOWER() LPAD() LTRIM() POSICIÓN() REPETIR() SUSTITUIR() INVERSIÓN() DERECHA() RPAD() RTRIM() DIVIDIR_PARTES() STRING_AGG() SUBSTRING() TRANSLATE() TRIM() SUPERIOR() Más funciones SQL Una revisión de todas las funciones de cadena SQL principales, incluyendo sus definiciones y ejemplos. Las funciones de cadena SQL manipulan valores de cadena (incluyendo texto y alfanuméricos). También conocidas como funciones de texto en SQL, las funciones de cadena toman uno o más valores de cadena como argumento y devuelven un valor de cadena modificado. Consulte este curso interactivo en Funciones estándar de SQL si quieres más práctica de la que incluye este artículo. Proporciona 211 ejercicios sobre funciones numéricas de SQL, funciones de cadena o texto, funciones de fecha y hora y funciones agregadas. Completa los ejercicios para repasar y consolidar tus conocimientos, y luego ponlos a prueba con el cuestionario final. Bien, pasemos a nuestra visión general de las funciones de cadena de SQL. Lista de Funciones de Cadena SQL Importante: En SQL, encerramos los valores de cadena entre comillas simples de la siguiente manera: 'this is a string'. ¿Pero qué pasa si queremos incluir un carácter de comilla simple en el valor de la cadena? Revise nuestro libro de cocina Cómo Escapar Comillas Simples en SQL para aprender cómo escapar caracteres especiales en cadenas SQL. Nota: Las funciones de cadena SQL pueden diferir entre los motores de bases de datos. A continuación listamos las funciones disponibles en las bases de datos más populares, incluyendo PostgreSQL, MySQL y SQL Server. Function Description Further reading || (Concatenate) → Takes two or more strings. ← Concatenates (combines) them and returns the resulting string. * How to concatenate strings in SQL * How to concatenate string and NULL values in SQL Server < (Less than) > (Greater than) <= (Less than or equal to) >= (Greater than or equal to) = (Equals) <> , != (Does not equal) → Takes two strings. ← Compares them and returns a Boolean value. * How to compare two strings in SQL * How to order strings alphabetically in SQL LIKE → Takes one string and one regex template. ← Compares them and returns a Boolean value. * How to use LIKE in SQL CONCAT() → Takes two or more strings. ← Concatenates them and returns the resulting string. * How to concatenate strings in SQL * How to concatenate string and NULL values in SQL Server CONCAT_WS() → Takes a separator value and two or more strings. ← Concatenates them with the separator value in between and returns the resulting string. * How to concatenate strings in SQL * How to concatenate string and NULL values in SQL Server LEFT() → Takes one string and one integer (x). ← Returns x characters, starting from the left (e.g. LEFT(5) returns the first 5 characters in the string). LENGTH() (SQL Server: LEN()) → Takes one string. ← Returns the number of characters in the string. * How to check the length of a string in SQL LOWER() → Takes one string. ← Returns this string with all characters in lower case. * How to convert a string to lowercase in SQL LPAD() (SQL Server equivalents available) → Takes a string, an integer, and another string. ← Pads the first string value (starting from the left) with repetitions of the second string value to make the length equal to the integer. LTRIM() → Takes one string. ← Trims all white spaces from the left and returns the resulting string. POSITION() (SQL Server: CHARINDEX()) → Takes two strings. ← Returns the position number at which the first string is present in the second string. REPEAT() (SQL Server: REPLICATE()) → Takes a string and an integer (x). ← Returns a string that contains x string values (e.g. REPEAT('a', 3) returns 'aaa'). REPLACE() → Takes three strings. ← Returns the first string where the value of the second string is replaced by the third string (e.g. REPLACE('Hello world', 'Hello', 'Hi') returns 'Hi World'). * How to replace part of a string in MySQL * How to replace part of a string in SQL * How to replace part of a string in T-SQL REVERSE() → Takes one string. ← Returns the reversed value of the string. RIGHT() → Takes one string and one integer (x). ← Returns x characters from the right (e.g. RIGHT(5) returns the last 5 characters in the string). RPAD() (SQL Server equivalents available) → Takes a string, an integer, and another string. ← Pads the first string (starting from the right) with repetitions of the second string value to make the length equal to the integer. RTRIM() → Takes one string. ← Trims all white spaces from the right and returns the resulting string. SPLIT_PART() (MySQL: SUBSTRING_INDEX() SQL Server: STRING_SPLIT()) → Takes two strings and an integer. ← Splits the first string based on a separator provided in the second string and returns one part as indicated by the integer. * How to split a string in MySQL * How to split a string in Oracle * How to split a string in PostgreSQL * How to split a string in SQL Server STRING_AGG() (MySQL: GROUP_CONCAT()) → Takes one column of a string type and one string. ← Returns all values from the column, separated by the string. SUBSTRING() → Takes one string and two integers (x and y). ← Returns a substring consisting of the characters between the positions x and y. * How to extract a substring from a string in Oracle or SQLite * How to extract substrings in PostgreSQL and MySQL * How to extract a substring from a string in T-SQL * A complete guide to working with substrings in SQL * The SQL substring function in 5 examples TRANSLATE() (Not available in MySQL) → Takes three strings. ← Returns the first string where each value from the 2nd string is replaced with each value from the 3rd string. TRANSLATE('Hello World', 'ol', 'ek') will replace each occurrence of 'o' with 'e' and each occurrence of 'l' with 'k', resulting in 'Hekke Werkd'. TRIM() → Takes one string. ← Returns the string with leading and trailing white spaces removed. * How to trim strings in SQL UPPER() → Takes one string. ← Returns this string with all characters in upper case. * How to convert a string to uppercase in SQL Funciones de cadena SQL - Ejemplos Las siguientes secciones presentan ejemplos para cada función. Concatenación con || Este operador toma dos o más cadenas y devuelve el valor concatenado. SELECT 'Hello' || ' World' AS concatenated; concatenated Hello World Tenga en cuenta que si alguno de los operandos es nulo, el resultado será nulo: concatenated null Lea estos artículos para obtener más información: Cómo concatenar cadenas en SQL. Cómo concatenar cadenas y valores NULL en SQL Server. Comparación con <, >, <=, >=, =, <>, != Estos operadores toman dos cadenas, las comparan y devuelven un valor booleano. Un valor booleano indica Verdadero (1) o Falso (0). SELECT 'ABC' < 'XYZ' AS compare; compare 1 Como ABC está antes que XYZ en el alfabeto, esta expresión se evalúa como True. En SQL, los valores de texto se evalúan en función de su orden alfabético. También puede ver si las expresiones de cadena coinciden (o no): SELECT 'ABC' = 'XYZ' AS compare; compare 0 Lea estos artículos para obtener más información sobre: Cómo comparar dos cadenas en SQL. Cómo ordenar cadenas alfabéticamente en SQL. LIKE Este operador toma una cadena y una plantilla usando regex, las compara y devuelve un valor booleano. Utilizaremos tres plantillas regex: A% significa "empieza por A y tiene cualquier número de caracteres a continuación". Add ACT y AbE coincidirían con esta expresión regular. A_C significa "comienza con A, tiene un carácter y termina con C". AAC abc , aDc y alC coincidirían con esta expresión regular. %h significa "termina con h". With twenty-fifth y aah coincidirían con esta expresión regular. Importante: Aunque la mayoría de los dialectos SQL no distinguen entre mayúsculas y minúsculas, los patrones regex distinguen entre mayúsculas y minúsculas; 'A' y "a" son dos caracteres diferentes en regex. SELECT 'ABC' LIKE 'A%' AS compare; compare 1 SELECT 'ABC' LIKE 'A_C' AS compare; compare 1 SELECT 'Hello' LIKE '%H' AS compare; compare 0 Consulte este artículo para aprender a utilizar LIKE en SQL. CONCAT() Esta función toma dos o más cadenas, las concatena (es decir, las combina en una sola cadena) y devuelve la cadena resultante. SELECT CONCAT('Hello', ' World', '!') AS concat; concat Hello World! Tenga en cuenta que esta función ignora los valores nulos, a diferencia del operador ||: SELECT CONCAT('Hello', null, '!') AS concat; concat Hello! Lea estos artículos para obtener más información: Cómo concatenar cadenas en SQL. Cómo concatenar cadenas y valores NULL en SQL Server. CONCAT_WS() Esta función toma un valor separador y dos o más cadenas, las concatena con el valor separador entre ellas y devuelve la cadena resultante. SELECT CONCAT_WS('_','Hello', 'World') AS concat_ws; concat_ws Hello_World Tenga en cuenta que esta función ignora los valores nulos, a diferencia del operador ||. SELECT CONCAT_WS('_','Hello', null, 'World') AS concat_ws; concat_ws Hello_World Lea estos artículos para obtener más información sobre: Cómo concatenar cadenas en SQL. Cómo concatenar cadenas y valores NULL en SQL Server. IZQUIERDA() Esta función toma una cadena y un entero. Empezando por el principio (la izquierda), devuelve tantos caracteres como indique el entero. SELECT LEFT('Hello', 2) AS left; left He LONGITUD() Esta función toma una cadena y devuelve el número de caracteres que contiene. SELECT LENGTH('Hello') AS length; length 5 Tenga en cuenta que SQL Server utiliza LEN() en lugar de LENGTH(). Consulta este artículo para aprender a comprobar la longitud de una cadena en SQL. LOWER() Esta función toma una cadena y la devuelve con todos los caracteres en minúsculas. SELECT LOWER('Hello') AS lower; lower hello Consulte este artículo para aprender a convertir una cadena a minúsculas en SQL. LPAD() Esta función toma una cadena, un entero y otra cadena. Empezando por el principio (la izquierda), rellena el primer valor de cadena con repeticiones del segundo valor de cadena para que la longitud sea igual al entero. SELECT LPAD('Hello', 9, 'ABC') AS lpad; lpad ABCAHello Tenga en cuenta que SQL Server no proporciona esta función. Consulte algunos equivalentes disponibles en SQL Server. LTRIM() Esta función toma una cadena, recorta todos los espacios en blanco de la izquierda y devuelve la cadena resultante. SELECT LTRIM(' Hello World ') as ltrim; ltrim Hello World Tenga en cuenta que los espacios en blanco a la derecha de la cadena no se ven afectados. POSICIÓN() Esta función toma dos cadenas y devuelve el número de posición en el que la primera cadena está presente en la segunda. SELECT POSITION('Wo' IN 'Hello World') as position; position 7 Tenga en cuenta que SQL Server utiliza CHARINDEX() en lugar de POSITION(). REPETIR() Esta función toma una cadena y un número entero. Devuelve una cadena que contiene tantas repeticiones de la primera cadena como indica el entero. SELECT REPEAT('Hi', 3) as repeat; repeat HiHiHi Tenga en cuenta que SQL Server utiliza REPLICATE () en lugar de REPEAT(). SUSTITUIR() Esta función toma tres cadenas y devuelve la primera cadena en la que el valor indicado por la segunda cadena se sustituye por la tercera cadena. SELECT REPLACE('Hello World', 'Hello', 'Hi') as replace; replace Hi World Lea estos artículos para aprender más sobre: Cómo reemplazar parte de una cadena en MySQL. Cómo reemplazar parte de una cadena en SQL. Cómo reemplazar parte de una cadena en T-SQL. INVERSIÓN() Esta función toma una cadena y devuelve el valor invertido de la cadena. SELECT REVERSE('Hello') as reverse; reverse olleH DERECHA() Esta función toma una cadena y un entero. Empezando por el final de la cadena (la derecha), devuelve tantos caracteres como indique el entero. right lo RPAD() Esta función toma una cadena, un entero y otra cadena. Empezando por el final de la cadena (a la derecha), rellena la primera cadena con repeticiones de la segunda cadena para que la longitud sea igual al entero. SELECT RPAD('Hello', 9, 'ABC') AS rpad; rpad HelloABCA Tenga en cuenta que SQL Server no proporciona esta función. Consulte algunos equivalentes disponibles en SQL Server. RTRIM() Esta función toma una cadena, recorta todos los espacios en blanco del final y devuelve la cadena resultante. SELECT RTRIM(' Hello World ') as rtrim; rtrim Hello World Tenga en cuenta que los espacios en blanco en la parte delantera (izquierda) de la cadena no se ven afectados. DIVIDIR_PARTES() Esta función toma dos cadenas y un número entero. Divide la primera cadena basándose en el separador proporcionado en la segunda cadena y devuelve la parte indicada por el entero. El siguiente código divide 'Hola Mundo' por el espacio y devuelve la primera parte de la cadena dividida: SELECT SPLIT_PART('Hello World', ' ', 1) AS part; part Hello Hagamos lo mismo, pero esta vez cambiaremos el entero por 2. Esto devolverá la segunda parte de la cadena: SELECT SPLIT_PART('Hello World', ' ', 2) AS part; part World Observe que MySQL utiliza SUBSTRING_INDEX() en lugar de SPLIT_PART(). Tenga en cuenta que SQL Server utiliza STRING_SPLIT () en lugar de SPLIT_PART(). Lea estos artículos para obtener más información sobre: Cómo dividir una cadena en MySQL. Cómo dividir una cadena en Oracle. Cómo dividir una cadena en PostgreSQL. Cómo dividir una cadena en SQL Server. STRING_AGG() Esta función toma una columna de tipo cadena y una cadena. Devuelve la concatenación de todos los valores de la columna; cada valor está separado de los demás por la cadena. Se trata de una función de agregación que puede utilizarse con GROUP BY. Esta es la tabla de frutas que usaremos en este ejemplo: nameamount Apple1 Kiwi2 Banana3 SELECT STRING_AGG(name, ';') AS string_agg FROM fruits; string_agg Apple;Kiwi;Banana Observe que MySQL utiliza GROUP_CONCAT() en lugar de STRING_AGG(). SUBSTRING() Esta función toma una cadena y dos enteros. Devuelve una subcadena formada por los caracteres entre las posiciones indicadas por los enteros. SELECT SUBSTRING('Hello World', 2, 5) AS substring; substring ello Lea estos artículos para obtener más información: Cómo extraer una subcadena de una cadena en Oracle o SQLite. Cómo extraer subcadenas en PostgreSQL y MySQL. Cómo extraer una subcadena de una cadena en T-SQL. Una guía completa para trabajar con subcadenas en SQL. La función substring de SQL en 5 ejemplos. TRANSLATE() Esta función toma tres cadenas y devuelve la primera cadena donde los valores indicados por la segunda cadena son reemplazados por los valores indicados por la tercera cadena. SELECT TRANSLATE('Hello World', 'Ho', 'he') as translate; Este ejemplo toma un valor de cadena dado y sustituye H por h y o por e. translate helle Werld SELECT TRANSLATE('abc def', 'ad', 'xy') as translate; El ejemplo anterior toma un valor de cadena dado y sustituye a por x y d por y. translate xbc yef Tenga en cuenta que MySQL no proporciona esta función. Consulte algunos equivalentes disponibles en MySQL. TRIM() Esta función toma una cadena y la devuelve con los espacios en blanco eliminados. SELECT TRIM(' Hello World ') AS trim; trim Hello World Consulte este artículo para aprender a recortar cadenas en SQL. SUPERIOR() Esta función toma una cadena y la devuelve con todos los caracteres en mayúsculas. SELECT UPPER('Hello') AS upper; upper HELLO Consulta este artículo para aprender a convertir una cadena a mayúsculas en SQL. Más funciones SQL SQL proporciona muchas funciones diferentes - funciones numéricas, funciones agregadas, funciones de cadena, funciones de fecha y hora, y más. Para obtener más información sobre ellas, consulta nuestro libro de cocina SQL y los artículos de nuestro blog. Además, echa un vistazo a esta hoja de trucos gratuita en Funciones estándar de SQL . Puedes descargarla, imprimirla y tenerla a mano mientras trabajas y aprendes. Una vez más, te animamos a que visites nuestro curso en Funciones estándar de SQL si realmente quieres practicar. ¡Feliz aprendizaje! Tags: funciones de cadenas de SQL manipulación de cadenas