Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Funktionsweise der SQL Server DIFFERENCE()-Funktion

Dieser Artikel soll Ihnen helfen, den DIFFERENCE() zu verstehen Funktion, die eine T-SQL-Funktion ist, die in SQL Server, Azure usw. verfügbar ist.

Der Schlüssel zum Verständnis des DIFFERENCE() Funktion ist es zu verstehen, wie Soundex funktioniert (oder im Kontext von SQL Server, wie die SOUNDEX() Funktion funktioniert). Das liegt daran, dass DIFFERENCE() Funktion gibt die Differenz zwischen den Soundex-Werten zwischen zwei Strings zurück.

Ein Soundex-Wert ist vier Zeichen lang. Wenn zwei Wörter gleich klingen, haben sie denselben vierstelligen Soundex-Wert. Wenn sie ähnlich (aber nicht gleich) klingen, teilen ihre Soundex-Werte möglicherweise einige Zeichen, aber nicht alle. Ihre Soundex-Werte können beispielsweise zwei gleiche und zwei unterschiedliche Zeichen haben. Wenn zwei Wörter völlig unterschiedlich klingen, ist keines der Zeichen in ihren jeweiligen Soundex-Werten gleich.

Der DIFFERENCE() Funktion gibt einen Wert zurück, der von 0 reicht bis 4 . Dieser Wert stellt die Anzahl der Zeichen in den Soundex-Werten dar, die gleich sind. 0 gibt schwache oder keine Ähnlichkeit an und 4 weist auf starke Ähnlichkeit oder gleiche Werte hin.

Syntax

Hier ist zunächst die Syntax:

DIFFERENCE ( character_expression , character_expression )

Wie angegeben akzeptiert diese Funktion zwei Argumente. Die Soundex-Codes jedes Zeichenausdrucks werden verglichen und das Ergebnis zurückgegeben.

Beispiel – Genaue Übereinstimmung

Hier ist ein Beispiel dafür, was passiert, wenn beide Saiten gleich klingen (d. h. sie haben denselben Soundex-Wert):

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

Ergebnis:

4

Das Ergebnis ist 4 , was der höchstmögliche Wert ist. Das bedeutet, dass es eine starke Ähnlichkeit zwischen den beiden Saiten gibt (was ihre Soundex-Werte betrifft).

Falls Sie sich fragen, wo die Zahl 4 herkam, sehen Sie sich den folgenden Code an:

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

Ergebnis:

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

In diesem Beispiel der SOUNDEX() Funktion wird verwendet, um die Soundex-Codes für jedes Wort zurückzugeben. Wie sich herausstellt, haben beide Wörter dieselben Soundex-Codes (T000 ). Und weil alle vier Zeichen der Soundex-Codes gleich sind, DIFFERENCE() gibt 4 zurück .

Beispiel – Geringe Ähnlichkeit

Hier ist ein Beispiel dafür, wie es funktioniert, wenn die Zeichenfolgen eine geringere Ähnlichkeit haben:

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

Ergebnis:

2

Das Ergebnis ist 2 , die sich in der Mitte befindet. Die Saiten klingen nicht genau gleich, aber sie haben einige Ähnlichkeiten.

Und wie im vorherigen Beispiel können wir sehen, woher dieses Ergebnis stammt, indem wir den folgenden Code ausführen:

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

Ergebnis:

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

Wir können also sehen, dass nur zwei der Soundex-Zeichen zwischen diesen Wörtern gleich sind. Daher der DIFFERENCE() Ergebnis ist 2 .

Beispiel – Keine Ähnlichkeit

Hier ist ein Beispiel dafür, wie es funktioniert, wenn die Zeichenfolgen eine schwache oder keine Ähnlichkeit aufweisen:

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

Ergebnis:

0

Das Ergebnis ist 0 , was bedeutet, dass die Zeichenfolgen eine sehr schwache oder keine Ähnlichkeit aufweisen.

Und hier sind die Soundex-Codes für diese beiden Wörter:

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

Ergebnis:

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

In diesem Fall ist also keines der Zeichen gleich, daher ein DIFFERENCE() Ergebnis von 0 .