No MariaDB, você pode usar
SOUNDS LIKE em uma consulta para corresponder palavras que soam iguais. Sintaxe
A sintaxe fica assim:
expr1 SOUNDS LIKE expr2 É o mesmo que fazer isso:
SOUNDEX(expr1) = SOUNDEX(expr2) . Soundex é um algoritmo fonético para indexar nomes por som, conforme pronunciado em inglês. Se duas palavras soam iguais, elas devem ter a mesma string Soundex. Se duas palavras soam semelhantes, mas não exatamente iguais, sua string Soundex pode parecer semelhante, mas não exatamente a mesma.
Exemplo
Segue um exemplo básico:
SELECT 'Two' SOUNDS LIKE 'Too'; Resultado:
+-------------------------+ | 'Two' SOUNDS LIKE 'Too' | +-------------------------+ | 1 | +-------------------------+
Neste caso, as duas palavras soam iguais.
Podemos usar o
SOUNDEX() função para retornar a string Soundex de cada palavra:SELECT
SOUNDEX('Two'),
SOUNDEX('Too'); Resultado:
+----------------+----------------+
| SOUNDEX('Two') | SOUNDEX('Too') |
+----------------+----------------+
| T000 | T000 |
+----------------+----------------+ As cordas Soundex são idênticas. É por isso que
SOUNDS LIKE retornou 1 . Sem correspondência
Aqui está um exemplo de duas palavras que não soam iguais:
SELECT 'Cat' SOUNDS LIKE 'Dog'; Resultado:
+-------------------------+ | 'Cat' SOUNDS LIKE 'Dog' | +-------------------------+ | 0 | +-------------------------+
Neste caso temos
0 , porque as palavras não soam iguais. Presumivelmente, suas cordas Soundex são diferentes. Vamos descobrir:SELECT
SOUNDEX('Cat'),
SOUNDEX('Dog'); Resultado:
+----------------+----------------+
| SOUNDEX('Cat') | SOUNDEX('Dog') |
+----------------+----------------+
| C300 | D200 |
+----------------+----------------+ Sim. Diferentes cordas Soundex.
Exemplo de banco de dados
Aqui está um exemplo de uso de
SOUNDS LIKE no WHERE cláusula de uma consulta de banco de dados:SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE PetName SOUNDS LIKE 'Wagg'; Resultado:
+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag | W200 | W200 |
+---------+------------------+-----------------+ Aqui está usando o
SOUNDEX() função para fazer a mesma coisa:SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg'); Resultado:
+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag | W200 | W200 |
+---------+------------------+-----------------+