Voltar para a lista de artigos Artigos
6 minutos de leitura

5 Funções SQL para Manipular Cordas

As funções SQL usadas para manipular cordas, comumente chamadas de funções de cordas, estão entre as mais importantes ferramentas SQL. Neste post, analisaremos cinco maneiras de realizar várias operações em strings.

Há muitas funções SQL que lhe permitem "editar" dados em cadeia. Conforme você aprende SQL, você verá como elas se mostram úteis. Alguns se ajustam a espaços ou caracteres desnecessários; outros lhe dizem qual é o comprimento de uma string. Estas funções lhe dão muitas oportunidades para transformar e trabalhar com strings, o que torna seu código mais eficaz. Elas também tornam o código mais fácil de entender.

Todo desenvolvedor de SQL deve saber quais funções SQL são usadas para manipular as strings. Neste post, vou ajudá-lo a começar explicando cinco funções de strings comuns em SQL.

Funções da SQL String: CONCAT

CONCAT(first_char, second_char, ... n_char)

A função de corda SQL CONCAT combina duas ou mais cordas em uma única corda. Todas as entradas de entrada_char precisam ser CHAR, VARCHAR, ou tipos de dados NCHAR.

Escrevi dois exemplos simples que mostram como este comando é útil:

SELECT CONCAT ('LearnSQL is good', ' and great', ' and fantastic!') 
FROM DUAL;
--------------------

LearnSQL is good and great and fantastic!

Como você pode ver, CONCAT pegou as três cordas que eu entrei - 1) 'LearnSQL is good'; 2) 'and great'; 3) 'and fantastic!' - e as combinou em uma nova corda SQL. Esta técnica é muito útil quando queremos apresentar informações de banco de dados de uma forma legível.

Vamos supor que temos uma tabela chamada patient que armazena os números de identificação dos pacientes, nomes, datas de admissão e doenças. Queremos exibir os dados de cada paciente da maneira mais compreensível. A melhor opção é criar uma frase, como mostrado abaixo:

SELECT CONCAT(name, ' was admitted to St. Ann's Hospital on ', date, ' with ', illness) 
FROM patient
WHERE patient_id = 447;
------------------

John Doe was admitted to St. Ann’s Hospital on 21-11-2016 with flu.

Em muitos sistemas de banco de dados, CONCAT a função de string SQL pode ser substituída pelo símbolo de concatenação de string "||

".

Este operador é compatível com os padrões SQL, mas não funciona em todos os bancos de dados - por exemplo, no SQL Server, você deve usar "+".

Funções da SQL String: SUBSTITUIÇÃO

REPLACE(entry_char, string_searching, string_replace)

<pUma outra maneira de manipular as cordas em SQL é REPLACE. Esta função permite a substituição ou remoção seletiva de dados dentro de uma string SQL. Ela retorna um entry_char onde o valor de busca_de_files é substituído por string_replace. Se o string_replace valor é nulo, então todo valor correspondente busca_de_files é excluído da cadeia de entrada.

Vejamos dois exemplos de REPLACE no trabalho. Suponha que queiramos atualizar parte de um registro:

SELECT REPLACE ('LearnSQL is good!', 'good', 'great!') 
FROM DUAL;
---------------------

LearnSQL is great!

Como você pode ver, REPLACE mudou o valor good em LearnSQL is good!” to “great. O registro agora diz LearnSQL is great!

Agora vamos tentar uma demonstração mais prática de manipulação de cordas com esta função. Digamos que você tenha uma tabela chamada registry que armazena os nomes dos funcionários. Uma funcionária chamada Jannet (a única Jannet na tabela, para os fins desta ilustração) se casou e mudou seu sobrenome. A função REPLACE nos permite atualizar seu registro muito facilmente:

UPDATE registry
SET name = REPLACE(name, 'Kowalski', 'Novak')
WHERE name LIKE 'Jannet%'

Jannet Kowalski é agora oficialmente Jannet Novak, graças à função REPLACE.

Funções SQL String: SUBSTR

Há ainda mais funções SQL utilizadas para manipular as cordas. SUBSTR(char, position, length)

SUBSTR pega uma parte (ou substring) de uma string SQL e a devolve. Char define o que queremos usar como a fonte do substring; no exemplo a seguir, é LearnSQL. A função REPLACE posição é onde começa o substrato; 6 caracteres desde o início, neste caso. Finalmente, o comprimento define quanto tempo o substrato deve ter. Colocando tudo junto, conseguimos:

SELECT SUBSTR('LearnSQL',6,3) 
FROM DUAL;
-------------------

SQL

Esta função de cadeia SQL é amplamente utilizada para remover caracteres de uma cadeia grande e para adicionar caracteres em uma cadeia. Digamos que você tenha uma tabela chamada products que contém uma lista de produtos. A identificação do produto é composta de letras que identificam o tipo de produto e números que mostram a quantidade em mãos.

id
----------
AA91
AA55
BG66
WP21

Agora suponha que você queira adicionar um sublinhado entre as letras e números no ID do produto. Com CONCAT e SUBSTR, é fácil:

UPDATE products SET id = CONCAT(SUBSTR(id, 1, 2), '_', SUBSTR(id, 3);
id
----------
AA_91
AA_55
BG_66
WP_21

Vejamos estes comandos. UPDATE irá alterar o
products CONCAT conecta as porções de corda criadas por duas funções SUBSTR. Note que o segundo SUBSTR não tem um terceiro parâmetro - ele incluirá todos os caracteres localizados após a posição especificada no segundo parâmetro.

Lembre-se de que nem todos os sistemas de banco de dados usam o mesmo nome para as funções de string do servidor SQL. No SQL Server, a função SUBSTR é chamada SUBSTRING, mas a mesma sintaxe se aplica. Clique aqui para saber mais sobre o SQL Server.

Funções de string SQL: ASCII e CHR

ASCII(single_character)
CHR(character_code)

ASCII e CHR são duas funções SQL totalmente opostas. ASCII olha para um único caractere e retorna seu código numérico ASCII (por exemplo, "V" é 86). Se uma cadeia de caracteres for inserida, esta função de cadeia SQL retornará um valor para o primeiro caractere e ignorará o resto. CHR, por outro lado, pega o número do código ASCII e retorna o caractere apropriado. Dê-lhe um 86, e ele retornará um "V".

Vamos imaginar que você precisa encontrar todos cujo sobrenome comece com um A. Você decidiu usar o número de código ASCII para fazer isto. Primeiro de tudo, vamos encontrar o equivalente ASCII de "A".

SELECT ASCII('A')
FROM DUAL;
-------------------

65

Portanto, 65 é o nosso número. Agora podemos encontrar todos os registros necessários:

SELECT *
FROM workers
WHERE SUBSTR(second_name, 1, 1) = CHR(65);
first_name    second_name     age
---------    ------------     ------
Garry         Amundsen        41
Adam          Anderson        55
Elizabeth     Alanfry         33

Funções de corda SQL: TRIM

TRIM( [ [ LEADING | TRAILING | BOTH ] character FROM ] edit_char )

TRIMA principal função do SUBSTR é remover todos os caracteres especificados. caracteres desde a parte inicial (líder), parte final (trailing), ou ambas as partes (ambos) de uma cadeia específica (edit_char).

Esta instrução tem muitos parâmetros. Primeiro, você deve escolher a parte da corda onde deseja cortar os caracteres. Caso contrário, TRIM removerá os caracteres definidos tanto do início quanto do final da edit_char. A seguir, você deve dizer o que caracteres para remover. Se este parâmetro for omitido, a função removerá apenas caracteres de espaço. Finalmente, você define a cadeia.

Vamos ver como fica na prática:

Remover os espaços de acesso e de arrasto:

SELECT TRIM('    SQL2017    ')
FROM DUAL;
------------------

“SQL2017”
SELECT TRIM ('' FROM  '   SQL2017   ')
FROM DUAL;
------------------

"SQL2017"

Remover os espaços de fuga "2017" da corda:

SELECT TRIM (TRAILING '2017' FROM 'SQL2017')
FROM DUAL;
------------------

"SQL"

Remover tanto os espaços de fuga como os '20' da corda:

SELECT TRIM (BOTH '20' FROM '2017LearnSQL20')
FROM DUAL;
------------------

"17LearnSQL"

Infelizmente, TRIM não tem a mesma sintaxe entre bancos de dados. No SQL Server, TRIM leva apenas a edit_char e apaga todos os espaços das duas extremidades da corda. LTRIM apaga os espaços principais e RTRIM apaga os espaços de arrasto.

Conclusão

Há muitas funções SQL que nos permitem manipular as cordas. O que discutimos neste post é apenas uma pequena fração do que as funções SQL podem fazer. Para aprender as funções das strings SQL em detalhes, confira nosso LearnSQL.com.br's Funções Comuns em SQL curso online.