Like e Soundex - Busca em Banco de Dados e busca pelo som das palavras

23 de dezembro de 2022
Glaucio Daniel

Operadores Like e Soundex - Busca em Banco de Dados e busca pelo som das palavras

O comando mais utilizado em banco de dados é um comando de consulta, o comando SELECT, este comando como o nome diz ele seleciona ou exibe dados de uma ou mais tabelas em um banco de dados. Sempre deve ser usado com alguma cláusula como Where ou limit, isso permite que somente dados com condições seja exibidos. É neste comando que acontece a maioria das buscas no Banco, por exemplo quando fazemos uma consulta por período com início e fim, temos o comando SELECT, a cláusula WHERE e o operador BETWEEN em ação. Mas e quando precisamos realizar buscas dentro de textos, como podemos usar o comando SELECT, a clausula WHERE e os operadores LIKE, NOT LIKE, SOUNDEX para realizar essas buscas? E o que são buscas fonéticas? Veja neste artigo a resposta a essas perguntas e dicas incríveis que ajudarão a melhorar suas consultas não somente no MySQL mas em qualquer banco de dados relacional.

TL;DR;

  • O operador Like e Not Like são usados para buscas em banco de dados, e usam os caracteres % _ ‘ onde % representa qualquer caracter, o underline  representa uma posição e o apóstofre representa o início e fim de expressão. ’_jalm%' este exemplo pegaria o nome Djalma ou seja começa com algum caracter, deve ter jalm e termina com qualquer caracter.
  • Full-Text Search é uma busca em textos longos em campos do tipo text com índices que facilitam a localização do termo buscado.
  • Soundex - busca fonética, cada palavra tem um código de pronuncia, chamado de código fonético, este código é composto pela primeira letra da palavra e uma sequência numérica, palavras com pronuncia semelhante como michael e mikael possuem o mesmo código fonético. Soundex realiza a busca dessa maneira.

 

O operador Like e Not Like

O operador Like significa como isto, é utilizado para realizar buscas no banco de dados. Este operador utiliza três caracteres para determinar o tipo de busca:

  • ' Apóstrofe início e fim de expressão
  • % Qualquer caracter, um caracter coringa que pode representar também um conjunto de caracteres
  • _  Exatamente uma posição, _ _ representam duas posições

Comece com: 

SELECT * FROM clientes where nomeCli like ‘João%’ 

Neste caso serão exibidos todos os clientes cujo nome comece com João e termine com qualquer coisa.

Termine com: 

SELECT * FROM clientes where nomeCli like ‘%Rangel' 

Neste caso serão exibidos todos os clientes cujo nome termine com Rangel e comece com qualquer coisa.

Exatamente: 

SELECT * FROM clientes where nomeCli like ‘João Henrique Rangel’

Neste caso serão exibidos todos os clientes cujo nome seja exatamente João Henrique Rangel, é semelhante a uma busca por igualdade.

Em qualquer parte:

SELECT * FROM clientes where nomeCli like ‘%Henrique%’ 

Neste caso serão exibidos todos os clientes cujo nome contenha Henrique em qualquer parte, no começo, meio ou fim.

Sempre utilizamos o operador Like para fazer uma busca que corresponda à expressão informada, já operador Not Like é justamente o contrário da expressão, ou seja todos menos isso:

  Em qualquer parte:

 SELECT * FROM clientes where nomeCli not like ‘%Henrique%’ 

Neste caso serão exibidos todos os clientes cujo nome não contenha Henrique em qualquer parte, no começo, meio ou fim.

Full-Text Search

Full-Text Search é um mecanismo e um tipo de índice em servidores MySQL permite que o usuário realize consultas Full-Text em tabelas no MySQL. Para utilizá-lo é necessário criar o índice full-text na tabela antes de executar as consultas. o índice full-text pode incluir uma ou mais colunas do tipo texto da tabela.

  • FULLTEXT é um índice do tipo full-text no MySQL.
  • Tabelas do tipo InnoDB ou MyISAM podem usar índices Full-text.
  • Índices Full-text  podem ser criados somente em colunas dos tipos VARCHAR, CHAR ou TEXT.
  • Um índice FULLTEXT pode ser criado com os comandos CREATE TABLE  ou adicionado posteriormente usando ALTER TABLE ou CREATE INDEX.

 

CREATE TABLE users(
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
title VARCHAR(200), 
description TEXT, 
FULLTEXT(title,description)
) ENGINE=InnoDB;

Inserimos alguns registros, e então realizamos a consulta:

SELECT * FROM users WHERE MATCH(title,description) AGAINST('curso mysql 8' IN NATURAL LANGUAGE MODE)

Neste caso ele irá utilizar os índices para localizar mais rapidamente como o AGAINST ou MATCH.

Soundex

Busca pelo som das palavras, esse é o recurso impressionante do Soundex. Já aconteceu de não saber exatamente escrever uma palavra, principalmente me inglês? Esse operador pode ajuda muito. A busca fonética converte cada string e uma sequência numérica para ser comparada.

select soundex('Michael');
select soundex('Mychael');
select soundex('Mykhael');
select soundex('Myckhael');

O resultado:

M240
CREATE TABLE student
(
   student_id INT AUTO_INCREMENT,  
   student_name VARCHAR(100) NOT NULL,
   student_class VARCHAR(20) NOT NULL,
   PRIMARY KEY(student_id )

);

 

INSERT INTO student
(student_name, student_class )
VALUES
   ('Michael Jordan', 'IX'),
   ('Michael Jackson', 'X' ),
   ('Michael Corleone', 'XI' ),
   ('Michael Caio', 'X'  ),
   ('Mychael Jordan', 'IX' ),
   ('Mykhael Jackson', 'X' ),
   ('Myckhael Corleone', 'X'  ),
   ('Micael Caio', 'XII');

Agora uma busca com os nomes que comecem com Michael.

select * from student where student_name like '%Michael%';

Agora veja a mágica do soundex, vamos isolar o primeiro nome com a função substring_index separando onde encontrar um espaço ‘ ’ 

select * from student 
where soundex(substring_index(student_name , ' ', 1)) = soundex('Michael');

Curso de MySQL 8

Para explicar o uso do operador Like, Not Like e Soundex além de muitos outros assuntos, nós gravamos e lançamos o curso MySQL 8. Aproveite um cupom de desconto exclusivo para quem está lendo essa matéria, basta acessar o link a seguir e o desconto já será aplicado. Adquira hoje mesmo

https://www.udemy.com/course/curso-mysql-8/?referralCode=8FD45C56E26A755DB63A

Então é isso, espero que esse breve artigo possa dar uma luz sobre como as buscas são realizadas em banco de dados.

A gente se vê no próximo vídeo em algum curso da Hcode. Até lá!

 

Hcode: Utilizamos cookies para a personalização de anúncios e experiências de navegação dentro de nosso site. Ao continuar navegando, você concorda com as nossas Política de Privacidade.