Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Fonctionnement de la fonction SQL Server DIFFERENCE()

Cet article a pour but de vous aider à comprendre la DIFFERENCE() function, qui est une fonction T-SQL disponible dans SQL Server, Azure, etc.

La clé pour comprendre la DIFFERENCE() fonction est de comprendre comment fonctionne Soundex (ou dans le contexte de SQL Server, comment le SOUNDEX() fonction fonctionne). C'est parce que la DIFFERENCE() renvoie la différence entre les valeurs Soundex entre deux chaînes.

Une valeur Soundex comporte quatre caractères. Si deux mots ont le même son, ils partageront la même valeur Soundex à quatre caractères. S'ils semblent similaires (mais pas identiques), leurs valeurs Soundex peuvent partager certains caractères mais pas tous. Par exemple, leurs valeurs Soundex peuvent avoir deux caractères identiques et deux différents. Si deux mots sonnent complètement différemment, aucun des caractères de leurs valeurs Soundex respectives ne sera identique.

La DIFFERENCE() la fonction renvoie une valeur comprise entre 0 à 4 . Cette valeur représente le nombre de caractères dans les valeurs Soundex qui sont identiques. 0 indique une similarité faible ou nulle, et 4 indique une forte similarité ou les mêmes valeurs.

Syntaxe

Tout d'abord, voici la syntaxe :

DIFFERENCE ( character_expression , character_expression )

Comme indiqué, cette fonction accepte deux arguments. Les codes Soundex de chaque expression de caractère sont comparés et le résultat est renvoyé.

Exemple – Correspondance exacte

Voici un exemple de ce qui se passe lorsque les deux cordes ont le même son (c'est-à-dire qu'elles ont la même valeur Soundex) :

SELECT DIFFERENCE('Two','Too');

Résultat :

4

Le résultat est 4 , qui est la valeur la plus élevée possible. Cela signifie qu'il existe une forte similitude entre les deux chaînes (en ce qui concerne leurs valeurs Soundex).

Si vous vous demandez où se trouve le nombre 4 est venu, jetez un oeil au code suivant :

SELECT 
    SOUNDEX('Two') AS Two,
    SOUNDEX('Too') AS Too;

Résultat :

Two   Too 
----  ----
T000  T000

Dans cet exemple, le SOUNDEX() La fonction est utilisée pour retourner les codes Soundex pour chaque mot. Il s'avère que les deux mots ont les mêmes codes Soundex (T000 ). Et parce que les quatre caractères des codes Soundex sont identiques, DIFFERENCE() renvoie 4 .

Exemple – Faible similarité

Voici un exemple de la façon dont cela fonctionne lorsque les chaînes ont une similarité inférieure :

SELECT DIFFERENCE('Tea','Coffee');

Résultat :

2

Le résultat est 2 , qui est au milieu. Les cordes ne sonnent pas exactement de la même manière, mais elles présentent certaines similitudes.

Et comme dans l'exemple précédent, nous pouvons voir d'où vient ce résultat en exécutant le code suivant :

SELECT 
    SOUNDEX('Tea') AS Tea,
    SOUNDEX('Coffee') AS Coffee;

Résultat :

Tea   Coffee
----  ------
T000  C100

Nous pouvons donc voir que seuls deux des caractères Soundex sont identiques entre ces mots. Donc la DIFFERENCE() le résultat est 2 .

Exemple – Aucune similarité

Voici un exemple de la façon dont cela fonctionne lorsque les chaînes ont une similitude faible ou nulle :

SELECT DIFFERENCE('Tree','Captivated');

Résultat :

0

Le résultat est 0 , ce qui signifie que les chaînes ont une similitude très faible ou nulle.

Et voici les codes Soundex pour ces deux mots :

SELECT 
    SOUNDEX('Tree') AS Tree,
    SOUNDEX('Captivated') AS Captivated;

Résultat :

Tree  Captivated
----  ----------
T600  C131

Donc dans ce cas, aucun des caractères n'est identique, d'où une DIFFERENCE() résultat de 0 .