Selecionar registros com caracteres especiais utilizando SQL

Selecionar registros com caracteres especiais utilizando SQL

Caso você tenha a necessidade de selecionar registros do seu banco de dados que possuam num determinado campo acentos ou outros caracteres especiais, você pode resolver este problema utilizando uma expressão regular. Vamos ver exemplos de como identificar caracteres especiais utilizando SQL Server e MySQL

Uma expressão regular são padrões utilizados para identificar determinadas combinações de caracteres em uma string. As expressões regulares também são chamadas de Regex. Uma expressão regular depende de um Regex Engine para ser processada. Você pode utilizar expressões regulares em banco de dados SQL e também em linguagens de programação como PHP ou JavaScript

 

Vamos começar com o SQL Server. Veja o exemplo a seguir:

 SELECT   * from tabela where campo LIKE %[^0-9a-zA-Z ]%

No exemplo acima, foi feito um like no campo para selecionar registros de acordo com expressão regular que está entre chaves. A expressão regular seleciona tudo o que NÃO é número, caracteres de A a Z ou espaços em branco.

As expressões regulares podem ser usadas em outras situações. Imagine por exemplo que você quer selecionar os registros de um campo código onde o código comece com o número 5 e tenha 2 digítos depois do 5. Você poderia resolver este problema utilizando a seguinte consulta:

SELECT * FROM tabela WHERE campo LIKE "5[0-9][0-9]"

Agora vamos ver os mesmos exemplos no banco de dados MySQL. A consulta para selecionar registros com acentuação ou caracteres especiais ficaria assim:

SELECT * from tabela where campo REGEXP \'[^0-9a-zA-Z ]\';

E a consulta que retorna registros que comecem com 5 e tenham 2 dígitos ficaria desta forma:

SELECT * FROM tabela WHERE campo REGEXP \'9[0-9][0-9]\';

 

Veja a seguir uma tabela com os operadores mais comuns utilizados em expressões regulares

 

[ ]Define uma lista de caracteres. 
ˆIndica uma pesquisa somente no início do bloco 
$Indica uma pesquisa somente no fim do bloco 
{x}Repete exatamente "x" vezes um caractere ou uma lista 
?Declara um ou mais caracteres como opcionais 
+Repete pelo menos uma vez .Indica qualquer caractere 
dEquivale a [0-9], seleciona apenas números. 
( )Define um bloco de caracteres 
wSeleciona todos os caracteres alfanuméricos, ou seja, letras e números, mas não acentos ou caracteres especiais. É o equivalente a [a-zA-Z_0-9] 
sSeleciona espaços 
?!Não deve conter a regra informada 
{x,y}Repetir no mínimo "x" ou no máximo "y" um caractere ou uma lista   

 

Expressões regulares são um assunto extenso e muito interessante. Para saber mais, abaixo segue um pequeno tutorial.

https://tableless.com.br/o-basico-sobre-expressoes-regulares/

 

Outros conteudos que podem ser de seu interesse

Como funciona a lógica da validação do CNPJ
05/09/2021SQL

Como funciona a lógica da validação do CNPJ

Entenda as regras por trás da validação deste importante documento

Saiba mais...
Criando um log utilizando gatilhos no SQL
05/06/2022SQL

Criando um log utilizando gatilhos no SQL

Um exemplo de como registrar alterações em tabelas usando triggers no SQL

Saiba mais...
Roadmap Excel
09/06/2024SQL

Roadmap Excel

Um roteiro de estudos para você dominar o básico do Excel para Análise de Dados

Saiba mais...

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


Warning: Cannot modify header information - headers already sent by (output started at /home/storage/f/7d/a9/dbins/public_html/blog/post.php:101) in /home/storage/f/7d/a9/dbins/public_html/blog/ga4_track.php on line 11