Este artigo tem como objetivo ajudá-lo a entender a
DIFFERENCE()
function, que é uma função T-SQL disponível no SQL Server, Azure, etc. A chave para entender a
DIFFERENCE()
função é entender como o Soundex funciona (ou, no contexto do SQL Server, como o SOUNDEX()
função funciona). Isso ocorre porque a DIFFERENCE()
A função retorna a diferença entre os valores Soundex entre duas strings. Um valor Soundex tem quatro caracteres. Se duas palavras soarem da mesma forma, elas compartilharão o mesmo valor Soundex de quatro caracteres. Se eles soarem semelhantes (mas não iguais), seus valores Soundex podem compartilhar alguns caracteres, mas não todos. Por exemplo, seus valores Soundex podem ter dois caracteres iguais e dois diferentes. Se duas palavras soarem completamente diferentes, nenhum dos caracteres em seus respectivos valores Soundex será o mesmo.
A
DIFFERENCE()
função retorna um valor que varia de 0
através de 4
. Este valor representa o número de caracteres nos valores Soundex que são iguais. 0
indica semelhança fraca ou sem similaridade e 4
indica forte similaridade ou os mesmos valores. Sintaxe
Primeiro, aqui está a sintaxe:
DIFFERENCE ( character_expression , character_expression )
Conforme indicado, esta função aceita dois argumentos. Os códigos Soundex de cada expressão de caractere são comparados e o resultado é retornado.
Exemplo – Correspondência Exata
Aqui está um exemplo do que acontece quando ambas as cordas soam iguais (ou seja, elas têm o mesmo valor Soundex):
SELECT DIFFERENCE('Two','Too');
Resultado:
4
O resultado é
4
, que é o maior valor possível. Isso significa que há uma forte semelhança entre as duas cordas (no que diz respeito aos valores Soundex). Se você está se perguntando onde está o número
4
veio, dê uma olhada no seguinte código:SELECT SOUNDEX('Two') AS Two, SOUNDEX('Too') AS Too;
Resultado:
Two Too ---- ---- T000 T000
Neste exemplo, o
SOUNDEX()
A função é usada para retornar os códigos Soundex para cada palavra. Acontece que ambas as palavras têm os mesmos códigos Soundex (T000
). E como todos os quatro caracteres dos códigos Soundex são iguais, DIFFERENCE()
retorna 4
. Exemplo – Baixa similaridade
Aqui está um exemplo de como funciona quando as strings têm uma similaridade menor:
SELECT DIFFERENCE('Tea','Coffee');
Resultado:
2
O resultado é
2
, que está no meio. As cordas não soam exatamente iguais, mas têm algumas semelhanças. E como no exemplo anterior, podemos ver de onde veio esse resultado executando o seguinte código:
SELECT SOUNDEX('Tea') AS Tea, SOUNDEX('Coffee') AS Coffee;
Resultado:
Tea Coffee ---- ------ T000 C100
Assim, podemos ver que apenas dois dos caracteres Soundex são os mesmos entre essas palavras. Portanto, a
DIFFERENCE()
o resultado é 2
. Exemplo - Sem semelhança
Aqui está um exemplo de como funciona quando as strings têm uma semelhança fraca ou nenhuma:
SELECT DIFFERENCE('Tree','Captivated');
Resultado:
0
O resultado é
0
, o que significa que as strings têm uma semelhança muito fraca ou nenhuma. E aqui estão os códigos Soundex para essas duas palavras:
SELECT SOUNDEX('Tree') AS Tree, SOUNDEX('Captivated') AS Captivated;
Resultado:
Tree Captivated ---- ---------- T600 C131
Portanto, neste caso, nenhum dos caracteres é o mesmo, portanto, um
DIFFERENCE()
resultado de 0
.