Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come funziona la funzione DIFFERENCE() di SQL Server

Questo articolo ha lo scopo di aiutarti a comprendere la DIFFERENCE() function, che è una funzione T-SQL disponibile in SQL Server, Azure e così via

La chiave per comprendere DIFFERENCE() la funzione è capire come funziona Soundex (o, nel contesto di SQL Server, come SOUNDEX() funzione funziona). Questo perché DIFFERENCE() La funzione restituisce la differenza tra i valori Soundex tra due stringhe.

Un valore Soundex è lungo quattro caratteri. Se due parole suonano allo stesso modo, condivideranno lo stesso valore Soundex di quattro caratteri. Se suonano simili (ma non uguali), i loro valori Soundex potrebbero condividere alcuni caratteri ma non tutti. Ad esempio, i loro valori Soundex potrebbero avere due caratteri uguali e due diversi. Se due parole suonano completamente diverse, nessuno dei caratteri nei rispettivi valori Soundex sarà lo stesso.

Il DIFFERENCE() la funzione restituisce un valore compreso tra 0 tramite 4 . Questo valore rappresenta il numero di caratteri nei valori Soundex che sono gli stessi. 0 indica debole o nessuna somiglianza e 4 indica una forte somiglianza o gli stessi valori.

Sintassi

Innanzitutto, ecco la sintassi:

DIFFERENCE ( character_expression , character_expression )

Come indicato, questa funzione accetta due argomenti. I codici Soundex di ogni espressione di carattere vengono confrontati e viene restituito il risultato.

Esempio – Corrispondenza esatta

Ecco un esempio di cosa succede quando entrambe le corde suonano allo stesso modo (cioè hanno lo stesso valore Soundex):

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

Risultato:

4

Il risultato è 4 , che è il valore più alto possibile. Ciò significa che c'è una forte somiglianza tra le due corde (per quanto riguarda i loro valori Soundex).

Se ti stai chiedendo dove si trova il numero 4 proveniva da, dai un'occhiata al seguente codice:

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

Risultato:

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

In questo esempio il SOUNDEX() viene utilizzata per restituire i codici Soundex per ogni parola. A quanto pare, entrambe le parole hanno gli stessi codici Soundex (T000 ). E poiché tutti e quattro i caratteri dei codici Soundex sono uguali, DIFFERENCE() restituisce 4 .

Esempio – Bassa somiglianza

Ecco un esempio di come funziona quando le stringhe hanno una somiglianza inferiore:

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

Risultato:

2

Il risultato è 2 , che è nel mezzo. Le corde non suonano esattamente allo stesso modo, ma hanno alcune somiglianze.

E come nell'esempio precedente, possiamo vedere da dove proviene questo risultato eseguendo il codice seguente:

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

Risultato:

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

Quindi possiamo vedere che solo due dei caratteri Soundex sono gli stessi tra queste parole. Pertanto il DIFFERENCE() il risultato è 2 .

Esempio:nessuna somiglianza

Ecco un esempio di come funziona quando le stringhe hanno una somiglianza debole o assente:

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

Risultato:

0

Il risultato è 0 , il che significa che le stringhe hanno una somiglianza molto debole o assente.

Ed ecco i codici Soundex per queste due parole:

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

Risultato:

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

Quindi in questo caso, nessuno dei caratteri è lo stesso, quindi un DIFFERENCE() risultato di 0 .