sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona SOUNDS LIKE en MariaDB

En MariaDB, puede usar SOUNDS LIKE en una consulta para hacer coincidir palabras que suenan parecido.

Sintaxis

La sintaxis es así:

expr1 SOUNDS LIKE expr2

Es lo mismo que hacer esto:SOUNDEX(expr1) = SOUNDEX(expr2) .

Soundex es un algoritmo fonético para indexar nombres por sonido, como se pronuncia en inglés. Si dos palabras suenan igual, deben tener la misma cadena Soundex. Si dos palabras suenan similares, pero no exactamente iguales, su cadena Soundex puede parecer similar pero no exactamente igual.

Ejemplo

He aquí un ejemplo básico:

SELECT 'Two' SOUNDS LIKE 'Too';

Resultado:

+-------------------------+
| 'Two' SOUNDS LIKE 'Too' |
+-------------------------+
|                       1 |
+-------------------------+

En este caso, las dos palabras suenan igual.

Podemos usar el SOUNDEX() función para devolver la cadena Soundex de cada palabra:

SELECT 
    SOUNDEX('Two'),
    SOUNDEX('Too');

Resultado:

+----------------+----------------+
| SOUNDEX('Two') | SOUNDEX('Too') |
+----------------+----------------+
| T000           | T000           |
+----------------+----------------+

Las cuerdas Soundex son idénticas. Esta es la razón por la cual SOUNDS LIKE devolvió 1 .

Sin coincidencia

Aquí hay un ejemplo de dos palabras que no suenan igual:

SELECT 'Cat' SOUNDS LIKE 'Dog';

Resultado:

+-------------------------+
| 'Cat' SOUNDS LIKE 'Dog' |
+-------------------------+
|                       0 |
+-------------------------+

En este caso obtuvimos 0 , porque las palabras no suenan igual. Presumiblemente, sus cuerdas Soundex son diferentes. Averigüemos:

SELECT 
    SOUNDEX('Cat'),
    SOUNDEX('Dog');

Resultado:

+----------------+----------------+
| SOUNDEX('Cat') | SOUNDEX('Dog') |
+----------------+----------------+
| C300           | D200           |
+----------------+----------------+

Sí. Diferentes cuerdas Soundex.

Ejemplo de base de datos

Aquí hay un ejemplo del uso de SOUNDS LIKE en el WHERE cláusula de una consulta de base de datos:

SELECT 
    PetName, 
    SOUNDEX(PetName),
    SOUNDEX('Wagg')
FROM Pets
WHERE PetName SOUNDS LIKE 'Wagg';

Resultado:

+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag     | W200             | W200            |
+---------+------------------+-----------------+

Aquí está usando SOUNDEX() función para hacer lo mismo:

SELECT 
    PetName, 
    SOUNDEX(PetName),
    SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg');

Resultado:

+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag     | W200             | W200            |
+---------+------------------+-----------------+