Uma das muitas funções de string do MySQL é a
SOUNDEX()
função. Esta função retorna uma string Soundex de uma determinada string. Se duas palavras soam iguais, elas devem ter a mesma string Soundex. Se duas palavras soarem semelhantes, mas não exatamente iguais, sua string Soundex pode parecer semelhante, mas não exatamente a mesma. Este artigo contém vários exemplos do Soundex para demonstrar como o
SOUNDEX()
função funciona no MySQL. Sintaxe
Primeiro, vamos ver a sintaxe:
SOUNDEX(str)
Onde
str
é a string para a qual você precisa da string Soundex. Exemplo
Aqui está um exemplo de recuperação da string Soundex de uma string:
SELECT SOUNDEX('Sure');
Resultado:
+-----------------+ | SOUNDEX('Sure') | +-----------------+ | S600 | +-----------------+
Nesse caso, a palavra
Sure
tem uma string Soundex de S600
. Exemplo – Correspondência Exata
Aqui está um exemplo de onde duas palavras soam iguais (ou muito semelhantes) e, portanto, compartilham a mesma string Soundex:
SELECT SOUNDEX('Sure') AS Sure, SOUNDEX('Shore') AS Shore;
Resultado:
+------+-------+ | Sure | Shore | +------+-------+ | S600 | S600 | +------+-------+
Aqui estão alguns exemplos de correspondência mais exata:
SELECT SOUNDEX('Dam') AS Dam, SOUNDEX('Damn') AS Damn, SOUNDEX('Too') AS Too, SOUNDEX('Two') AS Two;
Resultado:
+------+------+------+------+ | Dam | Damn | Too | Two | +------+------+------+------+ | D500 | D500 | T000 | T000 | +------+------+------+------+
Exemplo - Não corresponde
Aqui está um exemplo de onde duas palavras não soam iguais e, portanto, elas têm diferentes strings Soundex:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Resultado:
+-------+--------+ | Water | Coffee | +-------+--------+ | W360 | C100 | +-------+--------+
Como você pode ver, a string Soundex é completamente diferente para essas duas palavras.
Exemplo – Ortografias diferentes
Aqui está um exemplo de duas palavras que têm grafias diferentes (dependendo do país de onde você é):
SELECT SOUNDEX('Color') AS 'Color', SOUNDEX('Colour') AS 'Colour';
Resultado:
+-------+--------+ | Color | Colour | +-------+--------+ | C460 | C460 | +-------+--------+
Assim, podemos ver que essas palavras compartilharão a mesma string Soundex (desde que sejam pronunciadas da mesma maneira).
Exemplo – Mesmo som, Soundex diferente
Há casos em que as palavras soam iguais, mas têm cordas Soundex diferentes. A razão mais comum para isso é que eles começam com uma letra diferente, uma das quais é uma letra silenciosa. Você deve ter notado nos exemplos anteriores que a string Soundex começa com a primeira letra da string.
Portanto, se você tiver duas palavras que são pronunciadas exatamente da mesma forma, mas começam com uma letra diferente, elas terão uma string Soundex diferente.
aqui estão alguns exemplos:
SELECT SOUNDEX('Hole') AS 'Hole', SOUNDEX('Whole') AS 'Whole', SOUNDEX('Our') AS Our, SOUNDEX('Hour') AS Hour;
Resultado:
+------+-------+------+------+ | Hole | Whole | Our | Hour | +------+-------+------+------+ | H400 | W400 | O600 | H600 | +------+-------+------+------+
Os pares neste exemplo têm strings Soundex diferentes apenas porque sua primeira letra é diferente.
Exemplo – Soundex em uma consulta de banco de dados
Aqui está um exemplo de uso de
SOUNDEX()
em uma consulta de banco de dados. Neste caso, estamos procurando por qualquer registro que soe como “Ay See Dee Ci”:SELECT ArtistName FROM Artists WHERE SOUNDEX(ArtistName) = SOUNDEX('Ay See Dee Ci');
Resultado:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+
Então
AC/DC
aparentemente tem o mesmo código Soundex que Ay See Dee Ci
(pelo menos ao usar o MySQL) Só para ter certeza, aqui estão os códigos Soundex para ambas as strings:SELECT SOUNDEX('AC/DC') AS 'AC/DC', SOUNDEX('Ay See Dee Ci') AS 'Ay See Dee Ci';
Resultado:
+-------+---------------+ | AC/DC | Ay See Dee Ci | +-------+---------------+ | A232 | A232 | +-------+---------------+
Uma alternativa:PARECE
Uma consulta alternativa poderia ter sido construída usando
SOUNDS LIKE
em vez do SOUNDEX()
função. Assim:SELECT ArtistName FROM Artists WHERE ArtistName SOUNDS LIKE 'Ay See Dee Ci';
Resultado:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+