Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como funciona a função SOUNDEX() do SQL Server


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.