Funções de manipulação de strings no SQL

 

Vamos ver a seguir exemplos das funções de texto mais comuns do MySQL e no SQL Server


As funções que vão ser apresentadas neste artigo são as seguintes:

 

CHARINDEX - Localiza a posição de um determinado caractere.

LEFT - Seleciona uma determina quantidade da caracteres a partir da esquerda.

RIGHT - Seleciona uma determina quantidade da caracteres a partir da direita.

LEN ou LENGTH - Conta a quantidade de caracteres.

REPLACE - Substitui um determinado caractere.

REVERSE - Inverte os caracteres.

LOWER - Converte os caracteres para minúsculo

UPPER - Converte os caracteres para maiúsculo

SUBSTRING - Seleciona parte de uma string com base numa posição inicial e final.

SUBSTRING_INDEX - Seleciona parte de uma string até atingir a quantidade informada do delimitador.

 

Primeiro vamos criar uma tabela e adicionar um conteúdo para testes.

 

CREATE TABLE funcionarios (

    codigo INT,

    nome VARCHAR (255)

);

 

INSERT INTO funcionarios (codigo, nome) VALUES (1, 'Fulano da Silva');

INSERT INTO funcionarios (codigo, nome) VALUES (2, 'Beltrano Santos');

INSERT INTO funcionarios (codigo, nome) VALUES (3, 'Siclano Souza');

INSERT INTO funcionarios (codigo, nome) VALUES (4, 'Euripedes Silva');

INSERT INTO funcionarios (codigo, nome) VALUES (5, 'Xerxes Santos');

 

Como primeira atividade, vamos ver como converter os caracteres de um campo em maiúsculo ou minúsculo


A função LOWER permite converter uma string em caracteres minúsculos

 

SELECT LOWER(nome) as nome_minusculo FROM funcionarios

 

A função UPPER permite converter uma string em caracteres maiúsculos

 

SELECT UPPER(nome) as nome_maiusculo FROM funcionarios

 

Agora vamos ver como obter o tamanho de caracteres do conteúdo de um campo.

 

No MySQL, a função LENGTH() permite ver o tamanho em caracteres de uma string

 

SELECT nome, LENGTH(nome) as tamanho FROM funcionarios

 

No SQL Server podemos obter o mesmo resultado utilizando a função LEN()

 

SELECT nome, LEN(nome) as tamanho FROM funcionarios

 

Para selecionarmos parte do conteúdo de um campo podemos usar as funçoes LEFT, RIGHT e SUBSTRING

 

A função LEFT() permite retornar uma determinada quantidade de caracteres a partir da esquerda

 

SELECT LEFT(nome, 5) as resultado FROM funcionarios

 

A função RIGHT() permite retornar uma determinada quantidade de caracteres a partir da direita

 

SELECT RIGHT(nome, 5) as resultado FROM funcionarios

 

Para retornar uma parte qualquer de uma string, você pode utilizar a função SUBSTRING. Esta função recebe 3 parâmetros, o primeiro é o campo, o segundo é a posição inicial, o terceiro é quantidade de caracteres a retornar.

 

SELECT SUBSTRING(nome, 5, 3) AS resultado FROM FUNCIONARIOS

 

No exemplo anterior, a partir da posição 5, serão retornados os 3 caracteres seguintes do nome do funcionário

 

Para fazer substituições, você pode utilizar a função REPLACE. Ela recebe 3 parâmetros, o primeiro é a string, o segundo é o valor a ser localizado, e o terceiro é o novo valor.

 

SELECT nome, REPLACE(nome, "Silva", "Souza") as nome_novo FROM funcionarios

 

Neste exemplo, alteramos tudo o que estava como "Silva", e colocamos no lugar "Souza".

 

Vamos ver agora um exemplo um pouco mais sofisticado. Em nossa tabela de funcionarios, o nome e o sobrenome ficam no mesmo campo. Vamos considerar o espaço entre o nome para fazer a separação. 

 

Nosso primeiro exemplo vai ser para o MySQL. Para separar o nome do sobrenome vamos utilizar a função SUBSTRING_INDEX

Esta função recebe 3 parâmetros, o primeiro é a string que vamos trabalhar, o segundo é a string que vamos pesquisar dentro dela, e a terceira, é a quantidade de ocorrências da string pesquisada que devemos considerar. 

 

SELECT SUBSTRING_INDEX(nome, ' ', 1) as nome, SUBSTRING_INDEX(nome, ' ', -1) as sobrenome from funcionarios

 

Neste exemplo, o termo pesquisado foi o espaço (' '). No primeiro exemplo, se retornou o nome até localizar a primeira ocorrência do espaço. No segundo exemplo, como o valor foi negativo, a busca começou pelo final da string.

Agora chegou a ver de resolver o mesmo problema utilizando o SQL Server. 

Para retornar o nome, vamos utilizar a função CHARINDEX. Ela permite retornar a posição da primeira ocorrência do termo pesquisado

 

SELECT CHARINDEX(valor pesquisar, campo)

 

Com base na posição do primeiro espaço, vai ser possível separar o nome do sobrenome utilizando a função 

SUBSTRING

 

SELECT

SUBSTRING (nome, 0, CHARINDEX(' ', nome)) 

FROM funcionarios

 

Para selecionar o sobrenome vamos utilizar também a função SUBSTRING, porem precisamos fazer a busca a partir do final do nome, ou seja, o sobrenome vai ser tudo o que estiver a partir da última ocorrência do espaço. Para isso, será necessário inverter a string, isso pode ser feito utilizando a função REVERSE

SELECT REVERSE(nome_do_campo)

Seré necessário utilizar o REVERSE duas vezes, uma para localizar o conteúdo a partir do último espaço, e outra para voltar a string ao seu formato original.

 

 

SELECT

SUBSTRING(nome, 0, CHARINDEX(' ', nome)) As Nome,

REVERSE(SUBSTRING(REVERSE(nome), 0, CHARINDEX(' ', REVERSE(nome)))) As Sobrenome

FROM funcionarios

 

Quer conferir mais dicas sobre banco de dados? Clique aqui e veja mais dicas!
BINS - Blog SQL

 

Conteúdo sobre banco de dados sem complicação!

MySQL - Referência Rápida

 

SQL Server - Referência Rápida

 

SQL vs Mongo

 

 

 

Veja outros conteúdos que podem ser de seu interesse