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 vai nos permitir pegar a string até um determinado caractere. 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
Encerramento
Neste artigo você viu como trabalhar com strings no SQL.
Um outro assunto muito comum para quem está estudando SQL é aprender como trabalhar com datas. Se você quiser se informar sobre este assunto pode conferir o link a seguir.