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

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


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 .