19th Jun 2024 13 minutos de leitura Funções de cadeia de caracteres SQL: Uma visão geral completa Martyna Sławińska funções string sql manipulação de strings Índice Lista de funções de cadeia de caracteres do SQL Funções de cadeia de caracteres SQL - Exemplos Concatenação com || Comparação com <, >, <=, >=, =, <>, != LIKE CONCAT() CONCAT_WS() LEFT() LENGTH() LOWER() LPAD() LTRIM() POSITION() REPEAT() REPLACE() REVERSE() RIGHT() RPAD() RTRIM() SPLIT_PART() STRING_AGG() SUBSTRING() TRANSLATE() TRIM() UPPER() Mais funções SQL 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: Como concatenar cadeias de caracteres no SQL. Como concatenar valores de cadeia de caracteres e NULL no SQL Server. 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: Como comparar duas strings no SQL. Como ordenar as cadeias de caracteres em ordem alfabética no SQL. 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: Como concatenar cadeias de caracteres no SQL. Como concatenar cadeias de caracteres e valores NULL no SQL Server. 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: Como concatenar cadeias de caracteres no SQL. Como concatenar valores de cadeia de caracteres e NULL no SQL Server. 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: Como substituir parte de uma cadeia de caracteres no MySQL. Como substituir parte de uma cadeia de caracteres no SQL. Como substituir parte de uma cadeia de caracteres no T-SQL. REVERSE() Essa função recebe uma cadeia de caracteres e retorna o valor invertido da cadeia. SELECT REVERSE('Hello') as reverse; reverse olleH RIGHT() 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: Como dividir uma string no MySQL. Como dividir uma cadeia de caracteres no Oracle. Como dividir uma cadeia de caracteres no PostgreSQL. Como dividir uma cadeia de caracteres no SQL Server. 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: Como extrair uma substring de uma string no Oracle ou no SQLite. Como extrair substrings no PostgreSQL e no MySQL. Como extrair uma substring de uma string em T-SQL. Um guia completo para trabalhar com substrings em SQL. A função de substring do SQL em 5 exemplos. 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! Tags: funções string sql manipulação de strings