Voltar para a lista de artigos Artigos
13 minutos de leitura

Funções de cadeia de caracteres SQL: Uma visão geral completa

Uma revisão de todas as principais funções de cadeia de caracteres SQL, incluindo suas definições e exemplos.

As funções de cadeia de caracteres SQL manipulam valores de cadeia (incluindo texto e alfanuméricos). Também conhecidas como funções de texto no SQL, as funções de cadeia recebem um ou mais valores de cadeia como argumento e retornam um valor de cadeia modificado.

Confira este curso interativo em Funções Comuns em SQL se você quiser mais prática do que este artigo inclui. Ele oferece 211 exercícios sobre funções SQL numéricas, funções de cadeia de caracteres ou texto, funções de data e hora e funções agregadas. Conclua os exercícios para revisar e consolidar seu conhecimento e, em seguida, teste-o respondendo ao questionário final.

Certo, vamos passar à nossa visão geral das funções de cadeia de caracteres do SQL.

Lista de funções de cadeia de caracteres do SQL

Importante: no SQL, colocamos os valores das cadeias de caracteres entre aspas simples, assim: 'this is a string'. Mas e se quisermos incluir um caractere de aspa simples no valor da cadeia de caracteres? Consulte nosso livro de receitas How to Escape Single Quotes in SQL para saber como escapar de caracteres especiais em cadeias de caracteres SQL.

Observação: as funções de cadeia de caracteres SQL podem diferir entre os mecanismos de banco de dados. Abaixo, listamos as funções disponíveis em bancos de dados populares, incluindo PostgreSQL, MySQL e 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

Funções de cadeia de caracteres SQL - Exemplos

As seções a seguir apresentam exemplos de cada função.

Concatenação com ||

Esse operador usa duas ou mais cadeias de caracteres e retorna o valor concatenado.

SELECT 'Hello' || ' World' AS concatenated;
concatenated
Hello World

Observe que, se qualquer operando for nulo, o resultado será nulo:

concatenated
null

Leia estes artigos para saber mais sobre:

Comparação com <, >, <=, >=, =, <>, !=

Esses operadores pegam duas cadeias de caracteres, comparam-nas e retornam um valor booleano. Um valor booleano indica Verdadeiro (1) ou Falso (0).

SELECT 'ABC' < 'XYZ' AS compare;
compare
1

Como ABC vem antes de XYZ no alfabeto, essa expressão é avaliada como True. No SQL, os valores de texto são avaliados com base em sua ordem alfabética. Você também pode ver se as expressões de cadeia de caracteres correspondem (ou não):

SELECT 'ABC' = 'XYZ' AS compare;
compare
0

Leia estes artigos para saber mais sobre:

LIKE

Esse operador pega uma cadeia de caracteres e um modelo usando regex, compara-os e retorna um valor booleano. Usaremos três modelos de regex:

  • A% significa "começa com A e tem qualquer número de caracteres a seguir". Add, ACT, e AbE corresponderiam a essa regex.
  • A_C significa "começa com A, tem um caractere e termina com C". AAC, abc, aDc, e alC corresponderiam a essa regex.
  • %h significa "termina com h". With, twenty-fifth, e aah corresponderiam a essa regex.

Importante: embora a maioria dos principais dialetos SQL não diferencie maiúsculas de minúsculas, os padrões regex diferenciam maiúsculas de minúsculas; "A" e "a" são dois caracteres diferentes na 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 artigo para saber como usar LIKE no SQL.

CONCAT()

Essa função pega duas ou mais cadeias de caracteres, concatena-as (ou seja, combina-as em uma única cadeia) e retorna a cadeia resultante.

SELECT CONCAT('Hello', ' World', '!') AS concat;
concat
Hello World!

Observe que essa função ignora valores nulos, ao contrário do operador ||:

SELECT CONCAT('Hello', null, '!') AS concat;
concat
Hello!

Leia estes artigos para saber mais sobre:

CONCAT_WS()

Essa função recebe um valor separador e duas ou mais cadeias de caracteres, concatena-as com o valor separador no meio e retorna a cadeia de caracteres resultante.

SELECT CONCAT_WS('_','Hello', 'World') AS concat_ws;
concat_ws
Hello_World

Observe que essa função ignora valores nulos, ao contrário do operador ||.

SELECT CONCAT_WS('_','Hello', null, 'World') AS concat_ws;
concat_ws
Hello_World

Leia estes artigos para saber mais sobre:

LEFT()

Essa função recebe uma cadeia de caracteres e um número inteiro. Começando do início (à esquerda), ela retorna o número de caracteres indicado pelo número inteiro.

SELECT LEFT('Hello', 2) AS left;
left
He

LENGTH()

Essa função recebe uma cadeia de caracteres e retorna o número de caracteres dessa cadeia.

SELECT LENGTH('Hello') AS length;
length
5

Observe que o SQL Server usa LEN() em vez de LENGTH().

Consulte este artigo para saber como verificar o comprimento de uma cadeia de caracteres no SQL.

LOWER()

Essa função recebe uma cadeia de caracteres e retorna essa cadeia com todos os caracteres em minúsculas.

SELECT LOWER('Hello') AS lower;
lower
hello

Consulte este artigo para saber como converter uma cadeia de caracteres em minúsculas no SQL.

LPAD()

Essa função recebe uma cadeia de caracteres, um número inteiro e outra cadeia de caracteres. Começando do início (à esquerda), ela preenche o primeiro valor da cadeia com repetições do segundo valor da cadeia para tornar o comprimento igual ao inteiro.

SELECT LPAD('Hello', 9, 'ABC') AS lpad;
lpad
ABCAHello

Observe que o SQL Server não fornece essa função. Confira alguns equivalentes disponíveis no SQL Server.

LTRIM()

Essa função pega uma cadeia de caracteres, apara todos os espaços em branco da esquerda e retorna a cadeia resultante.

SELECT LTRIM('   Hello World   ') as ltrim;
ltrim
Hello World

Observe que os espaços em branco no lado direito da cadeia de caracteres não são afetados.

POSITION()

Essa função pega duas cadeias de caracteres e retorna o número da posição em que a primeira cadeia de caracteres está presente na segunda cadeia de caracteres.

SELECT POSITION('Wo' IN 'Hello World') as position;
position
7

Observe que o SQL Server usa CHARINDEX() em vez de POSITION().

REPEAT()

Essa função recebe uma cadeia de caracteres e um número inteiro. Ela retorna uma cadeia de caracteres que contém tantas repetições da primeira cadeia de caracteres quanto indicado pelo número inteiro.

SELECT REPEAT('Hi', 3) as repeat;
repeat
HiHiHi

Observe que o SQL Server usa REPLICATE() em vez de REPEAT().

REPLACE()

Essa função recebe três cadeias de caracteres e retorna a primeira cadeia de caracteres em que o valor indicado pela segunda cadeia de caracteres é substituído pela terceira cadeia de caracteres.

SELECT REPLACE('Hello World', 'Hello', 'Hi') as replace;
replace
Hi World

Leia estes artigos para saber mais sobre:

REVERSE()

Essa função recebe uma cadeia de caracteres e retorna o valor invertido da cadeia.

SELECT REVERSE('Hello') as reverse;
reverse
olleH

Essa função recebe uma cadeia de caracteres e um número inteiro. Começando do final da cadeia de caracteres (à direita), ela retorna o número de caracteres indicado pelo número inteiro.

right
lo

RPAD()

Essa função recebe uma cadeia de caracteres, um número inteiro e outra cadeia de caracteres. Começando do final da cadeia (à direita), ela preenche a primeira cadeia com repetições da segunda cadeia para tornar o comprimento igual ao inteiro.

SELECT RPAD('Hello', 9, 'ABC') AS rpad;
rpad
HelloABCA

Observe que o SQL Server não fornece essa função. Confira alguns equivalentes disponíveis no SQL Server.

RTRIM()

Essa função pega uma cadeia de caracteres, apara todos os espaços em branco do final e retorna a cadeia resultante.

SELECT RTRIM('   Hello World   ') as rtrim;
rtrim
Hello World

Observe que os espaços em branco na frente (esquerda) da cadeia de caracteres não são afetados.

SPLIT_PART()

Essa função recebe duas cadeias de caracteres e um número inteiro. Ela divide a primeira cadeia com base no separador fornecido na segunda cadeia e retorna a parte indicada pelo número inteiro. O código a seguir divide "Hello World" pelo espaço e retorna a primeira parte da string dividida:

SELECT SPLIT_PART('Hello World', ' ', 1) AS part;
part
Hello

Vamos fazer a mesma coisa, mas, desta vez, mudaremos o número inteiro para 2. Isso retornará a segunda parte da cadeia de caracteres:

SELECT SPLIT_PART('Hello World', ' ', 2) AS part;
part
World

Observe que o MySQL usa SUBSTRING_INDEX() em vez de SPLIT_PART().

Observe que o SQL Server usa STRING_SPLIT() em vez de SPLIT_PART().

Leia estes artigos para saber mais sobre:

STRING_AGG()

Essa função recebe uma coluna do tipo string e uma string. Ela retorna a concatenação de todos os valores da coluna; cada valor é separado dos demais pela cadeia de caracteres. Essa é uma função de agregação que pode ser usada com GROUP BY.

Essa é a tabela de frutas que usaremos neste exemplo:

nameamount
Apple1
Kiwi2
Banana3
SELECT STRING_AGG(name, ';') AS string_agg
FROM fruits;
string_agg
Apple;Kiwi;Banana

Observe que o MySQL usa GROUP_CONCAT() em vez de STRING_AGG().

SUBSTRING()

Essa função recebe uma string e dois inteiros. Ela retorna uma substring que consiste nos caracteres entre as posições indicadas pelos inteiros.

SELECT SUBSTRING('Hello World', 2, 5) AS substring;
substring
ello

Leia estes artigos para saber mais sobre:

TRANSLATE()

Essa função recebe três cadeias de caracteres e retorna a primeira cadeia de caracteres, na qual os valores indicados pela segunda cadeia de caracteres são substituídos pelos valores indicados pela terceira cadeia de caracteres.

SELECT TRANSLATE('Hello World', 'Ho', 'he') as translate;

Este exemplo usa um determinado valor de string e substitui H por h e o por e.

translate
helle Werld
SELECT TRANSLATE('abc def', 'ad', 'xy') as translate;

O exemplo acima pega um determinado valor de string e substitui a por x e d por y.

translate
xbc yef

Observe que o MySQL não fornece essa função. Confira alguns equivalentes disponíveis no MySQL.

TRIM()

Essa função recebe uma cadeia de caracteres e retorna a cadeia com os espaços em branco à esquerda e à direita removidos.

SELECT TRIM('   Hello World   ') AS trim;
trim
Hello World

Consulte este artigo para saber como cortar cadeias de caracteres no SQL.

UPPER()

Essa função recebe uma cadeia de caracteres e a retorna com todos os caracteres em maiúsculas.

SELECT UPPER('Hello') AS upper;
upper
HELLO

Leia este artigo para saber como converter uma cadeia de caracteres em maiúsculas no SQL.

Mais funções SQL

O SQL oferece muitas funções diferentes: funções numéricas, funções de agregação, funções de cadeia de caracteres, funções de data e hora, entre outras. Para obter mais informações sobre elas, consulte nosso livro de receitas SQL e os artigos do nosso blog.

Além disso, confira esta folha de dicas Funções Comuns em SQL gratuita. Você pode baixá-la, imprimi-la e mantê-la à mão enquanto trabalha e aprende. Mais uma vez, recomendamos que você confira nosso curso sobre Funções Comuns em SQL se você realmente quiser praticar. Bom aprendizado!