Voltar para a lista de artigos Artigos
7 minutos de leitura

Uma visão geral das funções de texto SQL

Neste artigo, discutiremos os ins e outs das funções de texto SQL mais comuns, que permitem que você encontre e trabalhe com valores de string.

Antes de mergulharmos nas funções de texto, vamos rapidamente recapitular o que é uma função SQL. Simplificando, uma função é uma peça de código pré-definida que você pode usar em sua consulta SQL. Por exemplo, as funções SUM(), AVG(), e COUNT() são aplicadas a variáveis numéricas para calcular a soma, média e número de registros respectivamente.

Vamos usar o seguinte OrderDetails tabela do conhecido banco de dados Northwind para demonstrar como funciona o SUM().

OrderDetailIDOrderIDProductIDQuantity
1102481112
2102484210
310248725
410249149
5102495140
518104432812

O objetivo é devolver o total Quantity ordenado em todas as 518 ordens.

PERGUNTA:

SELECT SUM(Quantity) AS Total_Ordered_Quantity
FROM OrderDetails

RESULTADO:

Número de Registros: 1

Total_Ordered_Quantity
12743

No exemplo acima, a função SUM() foi utilizada para calcular o total de todas as quantidades encomendadas. O(s) argumento(s) (ou parâmetro(s)) da função é(são) definido(s) dentro dos parênteses. De acordo com a sintaxe SQL, os parênteses são necessários mesmo quando nenhum parâmetro é passado para a função.

Funções de texto em SQL

Os bancos de dados vêm com muitas funções embutidas diferentes. Portanto, é importante conhecer as funções mais utilizadas para que você possa escrever consultas de forma eficaz e eficiente, sem ter que criar suas próprias funções definidas pelo usuário a partir do zero. LearnSQL.com.br's Funções Comuns em SQL curso abrange todos os textos comuns, numéricos, data e hora, e funções agregadas usando exemplos práticos detalhados, passagens e exercícios.

Neste artigo, analisaremos algumas das funções de texto SQL mais amplamente utilizadas. Estas funcionam em tipos de dados de texto como VARCHAR, CHAR, e TEXT.

Observe que diferentes bancos de dados têm diferentes funções incorporadas. Neste artigo, vamos nos concentrar apenas nas funções SQL padrão, que funcionam para a maioria dos bancos de dados compatíveis com SQL. (Consulte a documentação de seu banco de dados para obter detalhes.) Para os exemplos mostrados abaixo, estaremos usando o Customers tabela do mesmo banco de dados Northwind.

CustomerIDCustomerNameContactNameAddressCityPostal Code
1102481112
Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DP

CHAR_LENGTH()

A função CHAR_LENGTH() retorna o número de caracteres em uma cadeia. Esta função é raramente utilizada por si só; normalmente você a encontrará em conjunto com outras funções.

Se a cadeia de entrada estiver vazia, CHAR_LENGTH() retornará 0. Se a cadeia de entrada for NULL, a função retorna NULL. A sintaxe é bastante simples - basta colocar o nome da coluna relevante entre parênteses.

Vamos ver um exemplo abaixo onde calculamos o comprimento da cadeia para cada um dos registros na coluna CustomerName do Customers mesa.

QUERY:

QUERY:

SELECT CHAR_LENGTH(CustomerName) 
FROM Customers;

RESULTADO:

Número de Registros: 91

19
34
23
15

Observe que nos resultados mostrados acima, o comprimento do fio inclui os espaços entre as palavras (isto é, entre o primeiro, o meio e o sobrenome).

UPPER() e LOWER()

As funções UPPER() e LOWER() convertem cada letra dentro de uma cadeia definida em caracteres maiúsculos ou minúsculos. Estas funções de texto são freqüentemente usadas para limpeza de dados ou para preparar dados para as etapas subseqüentes. Por exemplo, a função REPLACE() é sensível a maiúsculas e minúsculas, portanto você precisaria converter quaisquer cadeias de caracteres para o mesmo caso que o texto do critério REPLACE() para funcionar.

A sintaxe geral de ambas as funções é bastante simples; novamente, o nome da coluna vai dentro dos parênteses. Vamos tentar converter todos os registros da coluna Cidade para maiúsculas.

QUERY:

SELECT UPPER(City) as CITY 
FROM Customers;

RESULTADO:

Número de Registros: 91

CITY
BERLIN
MEXICO D.F.
MEXICO D.F.
LONDON

A sintaxe e aplicação do LOWER() é exatamente a mesma do UPPER().

Finalmente, se um determinado valor é NULL, então a função retorna um NULL.

SUBSTRING()

A função SUBSTRING() extrai um substrato (ou seja, parte de uma corda) dentro de uma corda. Ela começa de um local especificado e extrai um substrato de um comprimento especificado.

A sintaxe geral da função SUBSTRING() é:

SUBSTRING(string, start, length)
  • A cadeia de caracteres.
  • A posição (a primeira posição é 1) para iniciar a extração.
  • O comprimento (ou seja, o número de caracteres) a retornar.

Note que todos os parâmetros são obrigatórios.

Se o parâmetro posição ou comprimento for NULL, então um NULL é retornado. Se o parâmetro de início for maior que o comprimento da cadeia (por exemplo, a cadeia é "APPLE" e o parâmetro de início é 10), a função retorna uma cadeia de comprimento zero. Se o parâmetro decomprimento for um valor negativo, você receberá um erro e a consulta não será executada. Se o total dos parâmetros de comprimento e início for maior que o comprimento da cadeia de caracteres, a função retorna a cadeia inteira.

Vamos explorar um exemplo onde extraímos os primeiros 5 caracteres de cada registro na coluna CustomerName:

QUERY:

SELECT SUBSTRING(CustomerName, 1, 5) AS ExtractName
FROM Customers

RESULTADO:

Número de Registros: 91

ExtractName
Alfre
Ana T
Anton
Aroun

REPLACE()

A função REPLACE() encontra e substitui todas as ocorrências de um substrato (dentro de um determinado cordão) por um novo substrato. Observe que a parte de busca da função é sensível a maiúsculas e minúsculas.

A sintaxe geral da função REPLACE() é ...

REPLACE(string, old_string, new_string)

... onde string é a string (ou nome da coluna) a ser pesquisada, old_string é o conjunto de caracteres a ser substituído, e new_string é a substituição.

Vamos ver um exemplo que substituirá a abreviatura "Str" por "Street" na coluna Endereço.

QUERY:

SELECT REPLACE(Address, 'Str.', 'Street') as Address 
FROM Customers;

RESULTADO:

Número de Registros: 91

Address
Obere Street 57
Avda. de la Constitución 2222
Mataderos 2312
120 Hanover Sq.

No exemplo acima, estamos substituindo "Str.", a_string antiga, por "Street", a_string nova, na coluna Address. Substituições como esta são frequentemente feitas durante a limpeza dos dados para tornar os dados mais consistentes para análise posterior.

Se o parâmetro new_string é NULL, então REPLACE() retorna também NULL. Se o parâmetro old_string não for encontrado, nada é substituído; a string é devolvida em sua forma original, sem substituição.

TRIM()

A função TRIM() remove os espaços inicial e final (ou outros caracteres que você especifica como parâmetro opcional) do início e/ou final de uma cadeia. É normalmente usada para remover quaisquer caracteres ou espaços desnecessários de um conjunto de dados antes da análise.

A sintaxe geral da função TRIM() é:

TRIM([‘TrimCharacters’ FROM] string)

Aqui, TrimCharacters (o parâmetro opcional) são os caracteres a serem removidos da cadeia de caracteres. Se isto não for especificado, o SQL remove os espaços de fuga e de liderança da cadeia de caracteres.

No exemplo abaixo, aplicamos a função TRIM() à coluna Address. Neste conjunto de dados, as entradas já estão bastante limpas. Mas vamos ver como funciona a função TRIM() se especificarmos que todos os dígitos numéricos devem ser recortados.

PERGUNTA:

SELECT TRIM('0123456789' FROM Address) As Trimmed_Address 
From Customers

RESULTADO:

Número de Registros: 91

Trimmed_Address
Obere Str.
Avda. de la Constitución
Mataderos
Hanover Sq.

Podemos ver que todos os números foram aparados tanto do início quanto do final de cada endereço. Cada um dos caracteres especificados na função TRIM() dentro do TrimCharacters são tratados e aparados individualmente. Além disso, uma vez que os caracteres definidos são aparados, os espaços inicial e final são também aparados. Como exemplo, para Hanover Square, '120' é recortado a partir da extremidade principal, enquanto que para Avda. De la Constitución, '2222' é recortado a partir da extremidade traseira.

A função TRIM() é uma maneira clara de combinar as funcionalidades das funções LTRIM() e RTRIM(), que removem respectivamente os espaços de acesso e de arrasto. Para uma caminhada detalhada, consulte Como remover espaços à frente e/ou à retaguarda de uma corda em T-SQL.

Colocando as funções de texto SQL a funcionar

Espero que estes exemplos de funções de texto SQL comumente utilizadas tenham ajudado você a compreendê-las. Analistas e desenvolvedores de dados usam funções de texto com freqüência, e o domínio destas funções é um componente chave de seu repertório SQL.

A melhor maneira de dominar as funções SQL é através da prática! Eu os encorajo a aprender usando exemplos práticos como os que estão em nossa Funções Comuns em SQL curso. Se você quiser se especializar nos dialetos PostgreSQL e T-SQL, verifique nossos cursos de Funções Comuns no PostgreSQL e Funções Comuns no MS SQL Server.