Funções de Manipulação de Strings no SQL Server

Manipulação de Strings no SQL Server

A Manipulação de Strings (cadeias de caracteres) é uma tarefa trivial em bancos de dados e programação em geral. Tarefas como contar caracteres de uma string, converter letras de maiúsculas para minúsculas e vice-versa, obter partes de uma palavra ou frase, limpar caracteres indesejados e diversas outras são realizadas de forma corriqueira para tratar os dados que são armazenados e consultados em bancos de dados.

Os SGBDs possuem, normalmente, diversas funções internas que permitem realizar essas tarefas, e o Microsoft SQL Server possui um bom conjunto de funções de manipulação de strings disponível.

Neste artigo, veremos algumas das funções para manipular caracteres mais comuns presentes no SQL Server, com suas sintaxes, aplicações e exemplos práticos de uso.

Funções de Manipulação de Strings no SQL Server

As funções que serão vistas nesse artigo são as seguintes:

Função LEN

A função LEN, do inglês “length” (“comprimento”), é uma das funções de manipulação de strings no SQL Server mais utilizadas, sendo empregada para retornar o número de caracteres de uma string, ou seja, seu comprimento. Geralmente a usamos em consultas SQL para validar e manipular dados textuais, como verificar o número de caracteres em uma senha ou em um código.
 
Sintaxe
LEN(expressão)
Onde expressão é a string ou coluna de texto cujo comprimento se deseja calcular.
 
Exemplos
 
Exemplo 1: Contar o número de caracteres nos títulos de livros
 
Este exemplo consulta a tabela Livro e retorna os nomes dos livros juntamente com a contagem de caracteres de cada título.
SELECT NomeLivro, LEN(NomeLivro) 'Tamanho do Título'
FROM Livro;
Exemplo 2: Validar o comprimento do ISBN13
 
O ISBN13 deve conter exatamente 13 caracteres. Podemos usar a função LEN para verificar se algum registro na tabela Livro possui um ISBN com um número incorreto de caracteres:
SELECT NomeLivro, ISBN13, LEN(ISBN13) AS 'Tamanho do ISBN'
FROM Livro
WHERE LEN(ISBN13) <> 13;
Essa consulta retornará todos os livros cujo campo ISBN13 não contém exatamente 13 caracteres, indicando assim possíveis erros de inserção.
 
Exemplo 3:  Qual livro tem o título mais curto?
SELECT Nome_Livro, LEN(Nome_Livro)  'Tamanho do Título'
FROM tbl_Livro
WHERE LEN(Nome_Livro) = (
    SELECT MIN(LEN(Nome_Livro))
    FROM tbl_Livro
);
Serão retornados os nomes dos livros que possuam o título mais curto. Para isso, combinamos a função LEN com a função de agregação MIN em uma subconsulta.
 
Exemplo 4: Ordenar livros pelo comprimento do título
 
Também podemos ordenar os resultados de uma consulta com base no comprimento de uma string, como no exemplo a seguir, que lista os livros com os títulos mais curtos primeiro.
SELECT NomeLivro
FROM Livro
ORDER BY LEN(NomeLivro) ASC;
Exemplo 5:  Retornar as editoras cujos nomes tenham um tamanho fixo
 
Se quisermos localizar editoras cujo nome contém exatamente 10 caracteres, podemos usar a seguinte consulta:
SELECT NomeEditora, LEN(NomeEditora) AS Tamanho_Nome
FROM Editora
WHERE LEN(NomeEditora) = 10;
Esse tipo de análise pode ser útil para verificar padrões de nomenclatura ou para fins de organização.
 
Exemplo 6: Exibir autores com nomes longos
 
Podemos usar a função LEN para identificar autores que possuem nomes ou sobrenomes extensos.
SELECT NomeAutor, SobrenomeAutor, LEN(NomeAutor) + LEN(SobrenomeAutor) AS 'Tamanho do Nome Completo'
FROM Autor
WHERE (LEN(NomeAutor) + LEN(SobrenomeAutor)) > 20;
Essa consulta retornará os autores cujo nome completo (nome + sobrenome) contém mais de 20 caracteres.
 

Funções LOWER e UPPER

As funções LOWER e UPPER permitem converter os caracteres de uma string para letras minúsculas e maiúsculas, respectivamente.
 
Sintaxes
LOWER(expressão)
UPPER(expressão)
Onde expressão é o texto ou coluna de texto que se deseja transformar em minúsculas ou maiúsculas.
 
Exemplo 1: Converter nomes de livros para minúsculas
 
Este exemplo consulta a tabela Livro e retorna os títulos dos livros em letras minúsculas.
SELECT NomeLivro, LOWER(NomeLivro) AS 'Nome Minúsculo'
FROM Livro;
O resultado exibirá o nome original do livro ao lado de sua versão em minúsculas, útil quando se deseja padronizar a exibição dos títulos.
 
Exemplo 2: Comparar títulos de livros sem distinção de maiúsculas/minúsculas
 
Para verificar a existência de um livro independentemente do uso de maiúsculas ou minúsculas, pode-se utilizar LOWER na condição de uma consulta.
SELECT NomeLivro
FROM Livro
WHERE LOWER(NomeLivro) = 'a arte da eletrônica';
Essa consulta permitirá encontrar o livro “A Arte da Eletrônica” mesmo que seu título esteja registrado com diferentes combinações de maiúsculas e minúsculas.
 
Exemplo 3: Padronizar assuntos em letras maiúsculas
 
Se os registros na tabela Assunto contiverem uma mistura de letras maiúsculas e minúsculas, podemos usar UPPER para padronizar a exibição desses dados.
SELECT UPPER(NomeAssunto) AS Assunto
FROM Assunto;
Essa prática pode facilitar a leitura e garantir que os dados sejam exibidos de forma uniforme em relatórios ou interfaces.
 
Exemplo 4: Inserir novos registros padronizados
 
Ao inserir novos registros em uma tabela, podemos usar UPPER ou LOWER para garantir que o valor seja armazenado no banco de dados de forma padronizada.
 
Exemplo de inserção de um novo autor com o nome e sobrenome convertidos para letras maiúsculas:
INSERT INTO Autor (NomeAutor, SobrenomeAutor)
VALUES (UPPER('Fábio'), UPPER('dos Reis'));
Essa técnica pode ajudar a evitar discrepâncias no banco de dados, onde o mesmo nome pode ser inserido com diferentes formas de capitalização.
 
Exemplo 5: Converter os nomes e sobrenomes de autores para maiúsculas
 
Neste exemplo, podemos exibir os nomes completos dos autores (nome e sobrenome) em letras maiúsculas para um formato mais padronizado.
SELECT NomeAutor, SobrenomeAutor,
    UPPER(NomeAutor) AS NomeMaiusculo,
    UPPER(SobrenomeAutor) AS SobrenomeMaiusculo
FROM Autor;
Esse formato é útil quando se deseja uma apresentação visual consistente de dados textuais.
 

Funções LTRIM, RTRIM e TRIM

As funções LTRIM, RTRIM e TRIM são usadas para remover espaços em branco (ou caracteres específicos) no início, no final ou em ambos os lados de uma string. Úteis quando se deseja limpar ou padronizar dados textuais.
 
Sintaxes
LTRIM(expressão)
RTRIM(expressão)
TRIM([caracteres FROM] expressão)
Onde:
  • expressão: string que será modificada.
  • caracteres: Caracteres que se deseja remover. Se omitido, remove espaços em branco.
 
Exemplos
 
Exemplo 1: Remover espaços em branco no início dos nomes de livros
 
Se houver registros na tabela Livro com espaços em branco antes do nome do livro, podemos usar LTRIM em uma consulta para remover esses espaços ao exibi-los.
SELECT NomeLivro, LTRIM(NomeLivro) 'Nome Ajustado'
FROM Livro;
Neste exemplo, a consulta retornará o nome original do livro e sua versão sem os espaços em branco no início. Isso é útil para garantir que os dados sejam exibidos de forma consistente.
 
Exemplo 2: Remover espaços antes do sobrenome dos autores
Se os sobrenomes dos autores contiverem espaços em branco indesejados no início, podemos usar LTRIM para remover esses espaços.
 
SELECT SobrenomeAutor, LTRIM(SobrenomeAutor) AS SobrenomeAjustado
FROM Autor;
 
Isso garante que os sobrenomes sejam exibidos corretamente, sem espaços extras no início.
 
Exemplo 2: Remover espaços em branco no final dos nomes de editoras
 
Caso algum nome de editora na tabela Editora tenha sido registrado com espaços em branco no final, RTRIM pode ser usado para corrigir isso.
SELECT NomeEditora, RTRIM(NomeEditora) AS 'Nome da Editora Ajustado'
FROM Editora;
Neste exemplo, o nome da editora será retornado sem os espaços extras no final, garantindo que os dados estejam corretamente formatados.
 
Exemplo 5: Remover espaços em branco no início e no final dos títulos de livros ao mesmo tempo
 
Para garantir que os títulos dos livros na tabela Livro estejam sem espaços em branco no início e no final em ua consulta, podemos usar a função TRIM.
SELECT NomeLivro, TRIM(NomeLivro) AS NomeLivroAjustado
FROM Livro;
Isso remove qualquer espaço em branco extra no início e no final do título dos livros, garantindo que os dados estejam limpos.
 
Exemplo 3: Remover caracteres específicos de uma string
 
A função TRIM também pode ser usada para remover outros caracteres além dos espaços em branco. Suponha que, por algum motivo, os títulos de alguns livros foram armazenados com um caractere de asterisco (*) no início e no final. Podemos usar TRIM para remover esses caracteres.
SELECT NomeLivro, TRIM('*' FROM NomeLivro) AS NomeLivroLimpo
FROM Livro;
Esse exemplo remove os asteriscos do início e do final dos nomes dos livros, garantindo que apenas o título adequado seja exibido.
 
Exemplo 4: Atualizar registros para remover espaços indesejados
 
Ao identificar espaços em branco indesejados nos dados, podemos usar as funções LTRIM, RTRIM e TRIM em uma cláusula UPDATE para corrigir permanentemente os valores no banco de dados.
 
Por exemplo, para remover espaços no início e no final dos nomes das editoras cadastradas, alterando esses dados na tabela, podemos usar TRIM:
UPDATE Editora
SET NomeEditora = TRIM(NomeEditora);
Esse comando atualiza todos os registros da tabela Editora, removendo qualquer espaço extra no início ou no final dos nomes. Note que não usamos cláusula WHERE aqui, pois queremos que a atualização seja aplicada a todas as linhas da tabela.
 
Exemplo 5: Inserir dados sem espaços indesejados
 
Ao inserir novos dados, também é possível utilizar TRIM para garantir que os valores sejam armazenados corretamente. Por exemplo, ao cadastrar um novo autor, podemos garantir que o nome e sobrenome sejam armazenados sem espaços indesejados porventura digitados pelo usuário:
INSERT INTO Autor (NomeAutor, SobrenomeAutor)
VALUES (TRIM(' Fábio '), TRIM(' dos Reis '));
Essa técnica impede que valores com espaços indesejados sejam armazenados no banco de dados.
 

Funções LEFT e RIGHT

As funções LEFT e RIGHT são usadas para extrair partes de uma string, com base no número de caracteres contados a partir da esquerda ou da direita, respectivamente.
 
A função LEFT retorna os primeiros “n” caracteres de uma string, a partir da esquerda. Já a função RIGHT retorna os últimos “n” caracteres de uma string, contados a partir da direita.
 
Sintaxes:
LEFT(string, número_de_caracteres)
onde:
  • string: A string original da qual se deseja extrair os caracteres.
  • número_de_caracteres: O número de caracteres a ser extraído, começando pela esquerda.
RIGHT(string, número_de_caracteres)
Exemplo 1: Extrair os 4 últimos caracteres do ISBN com RIGHT
 
Em nosso banco de dados, a tabela Livro contém a coluna ISBN13, que armazena o número ISBN dos livros. Podemos querer extrair os últimos 4 caracteres do ISBN para identificar o título e dígito verificador da obra.
SELECT ISBN13,
    RIGHT(ISBN13, 4) AS 'Título e DV'
FROM Livro;
Exemplo 2: Extrair as iniciais dos nomes dos autores
 
Na tabela Autor, temos os nomes armazenados na coluna NomeAutor. Caso queiramos extrair os primeiros 2 caracteres dos nomes dos autores, podemos usar a função LEFT.
SELECT NomeAutor,
    LEFT(NomeAutor, 2) AS 'Iniciais Autor'
FROM Autor;
Exemplo 3: Extrair o ano de publicação com LEFT
 
Caso a data de publicação dos livros esteja armazenada na coluna DataPub no formato YYYY-MM-DD, podemos usar a função LEFT para extrair o ano da publicação (os 4 primeiros dígitos internamente).
SELECT NomeLivro,
    LEFT(CAST(DataPub AS VARCHAR), 4) AS AnoPublicacao
FROM Livro;
Na verdade o ideal, neste caso, seria usar uma função de manipulação de datas, que é mais adequado.
 

Função REPLACE

A função REPLACE é usada para substituir todas as ocorrências de uma substring por outra dentro de uma string. É útil para realizar transformações em dados de texto.
 
Sintaxe
REPLACE(string_original, substring_antiga, substring_nova)
onde:
  • string_original: A string na qual a substituição será realizada.
  • substring_antiga: O texto que será substituído.
  • substring_nova: O novo texto que substituirá a substring antiga.
Exemplos
 
Exemplo 1: Trocar todas as ocorrências de “Server 2010” por “Server 2020” nos nomes dos livros
UPDATE Livro
SET NomeLivro = REPLACE(NomeLivro, '2010', '2020')
WHERE NomeLivro LIKE '%Server 2010%';
-- Teste:
SELECT * FROM Livro;
Exemplo 2: Remover traços do ISBN dos livros
 
Se os números de ISBN dos livros forem inseridos com traços (por exemplo, 978-85-254-0417-9), pode ser necessário removê-los para padronizar o formato. Podemos usar a função REPLACE para remover os traços.
UPDATE Livro
SET ISBN13 = REPLACE(ISBN13, '-', '')
WHERE ISBN13 LIKE '%-%';
Neste caso, mandamos substituir os traços por nada, denotado pelas aspas simples sem conteúdo (nem mesmo um espaço em branco) no terceiro parâmetro passado à função.
 

Função SUBSTRING

A função SUBSTRING é utilizada para extrair uma parte de uma string a partir de uma posição inicial e com um comprimento específico. Permite selecionar trechos de texto dentro de colunas de tipos de caracteres, como VARCHAR, CHAR, TEXT
 
Sintaxe
SUBSTRING(expressão, início, comprimento)
onde:
  • expressão: A expressão de string ou a coluna da qual se deseja extrair uma parte.
  • início: A posição inicial (1 baseada) da extração.
  • comprimento: O número de caracteres a serem extraídos.
Exemplos
 
Exemplo 1: Extrair os três primeiros caracteres de um título de livro
 
Suponha que queiramos extrair os três primeiros caracteres da coluna NomeLivro da tabela Livro. Esta operação pode ser útil para criar códigos ou siglas a partir dos títulos dos livros.
SELECT NomeLivro, SUBSTRING(NomeLivro, 1, 3) AS SiglaLivro
FROM Livro;
Exemplo 2: Alterar nomes das editoras para que iniciem com uma letra maiúscula
 
Primeiramente vamos colocar os nomes das editoras em letras maiúsculas:
UPDATE Editora
SET NomeEditora = UPPER(NomeEditora);

SELECT * FROM Editora;
Agora vamos alterar os nomes das editoras para que apenas iniciem com uma letra maiúscula, com o restante do nome em minúsculas.
UPDATE Editora
SET NomeEditora = UPPER(LEFT(NomeEditora, 1)) + LOWER(SUBSTRING(NomeEditora, 2, LEN(NomeEditora)))
WHERE NomeEditora IS NOT NULL;
3. Extrair o ano de publicação a partir da coluna DataPub
 
No caso da coluna DataPub que armazena a data de publicação dos livros no formato YYYY-MM-DD, pode-se usar a função SUBSTRING para extrair o ano diretamente a partir da string da data. Vamos considerar que a coluna DataPub seja uma VARCHAR.
SELECT NomeLivro, DataPub, SUBSTRING(DataPub, 1, 4) AS AnoPublicacao
FROM Livro;
Uma outra alternativa para executar esta tarefa é usar funções de manipulação de data e hora, que possuem recursos mais adequados para o tratamento deste tipo de dado.
 

Função CONCAT

Uma das funções de manipulação de strings mais usadas no SQL Server, a função CONCAT permite concatenar (unir) duas ou mais strings em uma única string. Útil quando precisamos combinar dados de diferentes colunas ou acrescentar textos adicionais para formar uma nova informação.
 
Esta função aceita múltiplos parâmetros, as strings a serem unidas. O SQL Server converte automaticamente os valores não strings em texto
 
Sintaxe
CONCAT(valor1, valor2, valor3, ...)
onde:
  • valor1, valor2, …: Valores que serão concatenados. Podem ser colunas, literais ou expressões.
Exemplos
 
Exemplo 1: Concatenação simples de strings.
SELECT CONCAT('Fábio ', 'dos Reis') AS 'Nome Cliente';
Exemplo 2: Concatenar nomes e sobrenomes dos autores
 
A tabela Autor possui as colunas NomeAutor e SobrenomeAutor, que armazenam, respectivamente, o nome e o sobrenome dos autores. Para exibir o nome completo, podemos concatenar essas duas colunas.
SELECT CONCAT(NomeAutor, ' ', SobrenomeAutor) AS 'Nome Completo do Autor'
FROM Autor;
Exemplo 3: Concatenar ISBN e Nome do Livro
 
Na tabela Livro, podemos querer criar uma coluna que mostre tanto o nome do livro quanto o número ISBN13 em uma única string, para facilitar a identificação.
SELECT NomeLivro,
    ISBN13,
    CONCAT(NomeLivro, ' (ISBN: ', ISBN13, ')') AS LivroComISBN
FROM Livro;
Exemplo 4: Concatenar Data de Publicação Formatada
 
Em alguns casos, podemos querer exibir a data de publicação de um livro com um formato específico. Usando CONCAT, é possível combinar a data com outras informações para gerar um texto descritivo.
SELECT NomeLivro,
    DataPub,
    CONCAT('O livro "', NomeLivro, '" foi publicado em ', DataPub) AS DescricaoPublicacao
FROM Livro;

Conclusão

Neste artigo estudamos as funções para manipulação de strings mais comuns no SQL Server, incluindo suas sintaxes e alguns exemplos de uso de cada uma delas. O SQL Server oferece uma grande quantidade de funções para a realização de diversas tarefas, além da manipulação de strings, que incluem cálculos numéricos, manipulação temporal (data e hora), funções administrativas, e muitas outras que estudaremos nos próximos artigos.
 
Sobre Fábio dos Reis (1206 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*