Soundex é um algoritmo fonético para indexar nomes por som, conforme pronunciado em inglês. Foi desenvolvido e patenteado em 1918 e 1922.
Uma das funções disponíveis no SQL Server é o
SOUNDEX()
função, que retorna o código Soundex para uma determinada string. Sintaxe
A sintaxe fica assim:
SOUNDEX ( character_expression )
Onde
character_expression
é a palavra ou string para a qual você deseja o código Soundex. Pode ser uma constante, variável ou coluna. O
SOUNDEX()
A função é sensível ao agrupamento e as funções de string podem ser aninhadas. O Código Soundex
Como mencionado, o
SOUNDEX()
A função retorna o código Soundex para a string fornecida. O código Soundex é um código de quatro caracteres baseado em como a string soa quando falada. Aqui está um exemplo de um código Soundex:S600
Veja como um código Soundex é construído:
- O primeiro caractere do código é o primeiro caractere da string, convertido para maiúscula. Portanto, no exemplo acima, sabemos que a string começa com a letra S (minúscula ou maiúscula).
- Do segundo ao quarto caracteres do código são números que representam as letras na expressão.
- As letras A, E, I, O, U, H, W e Y são ignoradas, a menos que sejam a primeira letra da string.
- Zeros são adicionados no final, se necessário, para produzir um código de quatro caracteres.
Exemplo
Aqui está um exemplo de recuperação da string Soundex de uma string:
SELECT SOUNDEX('Sure');
Resultado:
S600
Assim, podemos ver que a palavra
Sure
tem um código Soundex de S600
. Exemplo de duas palavras correspondentes
Aqui está um exemplo de onde duas palavras compartilham o mesmo código Soundex (porque elas soam iguais):
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 de palavras que não correspondem
Aqui está um exemplo de onde duas palavras não soam iguais e, portanto, têm códigos Soundex diferentes:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Resultado:
Water Coffee ----- ------ W360 C100
Palavras com grafias diferentes
Algumas palavras têm grafias diferentes dependendo de qual país você é. Tais palavras compartilharão o mesmo código Soundex:
SELECT SOUNDEX('Flavor') AS 'Flavor', SOUNDEX('Flavour') AS 'Flavour';
Resultado:
Flavor Flavour ------ ------- F416 F416
Mesmo som, código Soundex diferente
Às vezes, duas palavras soam iguais, mas têm códigos Soundex diferentes. A razão mais comum para isso é que eles começam com uma letra diferente (um usa uma letra silenciosa). Como mencionado, o código Soundex começa com a primeira letra da string (convertida para maiúscula). Portanto, se você tiver duas palavras que são pronunciadas exatamente da mesma forma, mas começam com uma letra diferente, elas terão um código 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 códigos Soundex diferentes apenas porque sua primeira letra é diferente.