Like y Soundex - Búsqueda en Base de Datos y búsqueda por el sonido de las palabras

Glaucio Daniel23 de diciembre de 20225 min de lectura

En este artículo

Operadores Like y Soundex - Búsqueda en Bases de Datos y búsqueda por el sonido de las palabras

El comando más utilizado en bases de datos es un comando de consulta, el comando SELECT, este comando como su nombre indica selecciona o muestra datos de una o más tablas en una base de datos. Siempre debe ser utilizado con alguna cláusula como Where o limit, esto permite que solamente datos con condiciones sean mostrados. Es en este comando donde ocurre la mayoría de las búsquedas en la Base, por ejemplo cuando hacemos una consulta por período con inicio y fin, tenemos el comando SELECT, la cláusula WHERE y el operador BETWEEN en acción. Pero, ¿qué pasa cuando necesitamos realizar búsquedas dentro de textos, cómo podemos usar el comando SELECT, la cláusula WHERE y los operadores LIKE, NOT LIKE, SOUNDEX para realizar esas búsquedas? ¿Y qué son las búsquedas fonéticas? Ve en este artículo la respuesta a estas preguntas y consejos increíbles que ayudarán a mejorar tus consultas no solo en MySQL sino en cualquier base de datos relacional.

TL;DR;

  • El operador Like y Not Like se utilizan para búsquedas en bases de datos, y utilizan los caracteres % _ ‘ donde % representa cualquier carácter, el guion bajo representa una posición y el apóstrofe representa el inicio y fin de expresión. ’_jalm%' este ejemplo capturaría el nombre Djalma es decir comienza con algún carácter, debe tener jalm y termina con cualquier carácter.
  • Búsqueda de Texto Completo es una búsqueda en textos largos en campos del tipo texto con índices que facilitan la localización del término buscado.
  • Soundex - búsqueda fonética, cada palabra tiene un código de pronunciación, llamado código fonético, este código está compuesto por la primera letra de la palabra y una secuencia numérica, palabras con pronunciación similar como michael y mikael poseen el mismo código fonético. Soundex realiza la búsqueda de esta manera.

El operador Like y Not Like

El operador Like significa como esto, se utiliza para realizar búsquedas en la base de datos. Este operador utiliza tres caracteres para determinar el tipo de búsqueda:

  • ' Apóstrofe inicio y fin de expresión
  • % Cualquier carácter, un carácter comodín que puede representar también un conjunto de caracteres
  • _  Exactamente una posición, _ _ representan dos posiciones

Comience con: 

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

En este caso se mostrarán todos los clientes cuyo nombre comience con João y termine con cualquier cosa.

Termine con: 

SELECT * FROM clientes where nomeCli like ‘%Rangel'

En este caso se mostrarán todos los clientes cuyo nombre termine con Rangel y comience con cualquier cosa.

Exactamente: 

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

En este caso se mostrarán todos los clientes cuyo nombre sea exactamente João Henrique Rangel, es similar a una búsqueda por igualdad.

En cualquier parte:

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

En este caso se mostrarán todos los clientes cuyo nombre contenga Henrique en cualquier parte, al principio, en medio o al final.

Siempre utilizamos el operador Like para hacer una búsqueda que corresponda a la expresión informada, ya el operador Not Like es precisamente lo contrario de la expresión, es decir todos menos esto:

  En cualquier parte:

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

En este caso se mostrarán todos los clientes cuyo nombre no contenga Henrique en cualquier parte, al principio, en medio o al final.

Búsqueda de Texto Completo

Búsqueda de Texto Completo es un mecanismo y un tipo de índice en servidores MySQL que permite que el usuario realice consultas de Texto Completo en tablas en MySQL. Para utilizarlo es necesario crear el índice full-text en la tabla antes de ejecutar las consultas. El índice full-text puede incluir una o más columnas del tipo texto de la tabla.

  • FULLTEXT es un índice del tipo full-text en MySQL.
  • Las tablas del tipo InnoDB o MyISAM pueden usar índices Full-text.
  • Los índices Full-text  pueden ser creados solamente en columnas de los tipos VARCHAR, CHAR o TEXT.
  • Un índice FULLTEXT puede ser creado con los comandos CREATE TABLE  o agregado posteriormente usando ALTER TABLE o CREATE INDEX.
CREATE TABLE users(
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
description TEXT,
FULLTEXT(title,description)
) ENGINE=InnoDB;

Insertamos algunos registros, y entonces realizamos la consulta:

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

En este caso usará los índices para localizar más rápidamente como el AGAINST o MATCH.

Soundex

Búsqueda por el sonido de las palabras, este es el recurso impresionante de Soundex. ¿Alguna vez ha pasado que no sabe exactamente escribir una palabra, especialmente en inglés? Este operador puede ayudar mucho. La búsqueda fonética convierte cada cadena en una secuencia numérica para ser comparada.

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

El 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');

Ahora una búsqueda con los nombres que comiencen con Michael.

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

Ahora ve la mágica de soundex, vamos a aislar el primer nombre con la función substring_index separando donde encontrar un espacio ‘ ’ 

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

Curso de MySQL 8

Para explicar el uso del operador Like, Not Like y Soundex además de muchos otros temas, grabamos y lanzamos el curso MySQL 8. Aprovecha un cupón de descuento exclusivo para quien está leyendo este artículo, solo accede al link a continuación y el descuento ya será aplicado. Adquiere hoy mismo

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

Entonces eso es todo, espero que este breve artículo pueda iluminar sobre cómo se realizan las búsquedas en bases de datos.

Nos vemos en el próximo video en algún curso de Hcode. ¡Hasta entonces!

Sigue aprendiendo con Hcode

Regístrate en la plataforma de cursos y sigue las próximas guías del blog.