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 | +---------+------------------+-----------------+