MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como SONS LIKE funciona no MariaDB


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