Volver a la lista de artículos Artículos
Lectura de 13 minutos

Funciones de Cadena SQL: Una Visión Completa

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:

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:

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:

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:

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:

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!