Funções de manipulação de strings no SQL :: Bins ::
Funções de manipulação de strings no SQL
14/02/2021SQL
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.
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 (nome, 0, CHARINDEX(' ', nome))
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.