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

Funktionsweise der SQL Server SOUNDEX()-Funktion

Soundex ist ein phonetischer Algorithmus zum Indizieren von Namen nach Ton, wie sie im Englischen ausgesprochen werden. Es wurde 1918 und 1922 entwickelt und patentiert.

Eine der in SQL Server verfügbaren Funktionen ist SOUNDEX() Funktion, die den Soundex-Code für eine bestimmte Zeichenfolge zurückgibt.

Syntax

Die Syntax lautet wie folgt:

SOUNDEX ( character_expression )

Wobei character_expression ist das Wort oder die Zeichenfolge, für die Sie den Soundex-Code wünschen. Dies kann eine Konstante, Variable oder Spalte sein.

Der SOUNDEX() Die Funktion ist sortierungssensitiv und String-Funktionen können verschachtelt werden.

Der Soundex-Code

Wie bereits erwähnt, der SOUNDEX() Die Funktion gibt den Soundex-Code für die angegebene Zeichenfolge zurück. Der Soundex-Code ist ein vierstelliger Code, der darauf basiert, wie die Zeichenfolge beim Sprechen klingt. Hier ist ein Beispiel für einen Soundex-Code:

S600

So ist ein Soundex-Code aufgebaut:

  • Das erste Zeichen des Codes ist das erste Zeichen des Strings, umgewandelt in Großbuchstaben. Im obigen Beispiel wissen wir also, dass der String mit dem Buchstaben S beginnt (entweder Klein- oder Großbuchstabe).
  • Das zweite bis vierte Zeichen des Codes sind Zahlen, die die Buchstaben im Ausdruck darstellen.
  • Die Buchstaben A, E, I, O, U, H, W und Y werden ignoriert, es sei denn, sie sind der erste Buchstabe der Zeichenfolge.
  • Am Ende werden bei Bedarf Nullen hinzugefügt, um einen vierstelligen Code zu erhalten.

Beispiel

Hier ist ein Beispiel für das Abrufen der Soundex-Zeichenfolge aus einer Zeichenfolge:

SELECT SOUNDEX('Sure');

Ergebnis:

S600

Wir können also sehen, dass das Wort Sure hat einen Soundex-Code von S600 .

Beispiel für zwei übereinstimmende Wörter

Hier ist ein Beispiel dafür, wo zwei Wörter den gleichen Soundex-Code haben (weil sie gleich klingen):

SELECT 
    SOUNDEX('Sure') AS Sure, 
    SOUNDEX('Shore') AS Shore;

Ergebnis:

Sure  Shore
----  -----
S600  S600

Hier sind einige genauere Übereinstimmungsbeispiele:

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

Ergebnis:

Dam   Damn  Too   Two 
----  ----  ----  ----
D500  D500  T000  T000

Beispiel für Wörter, die nicht übereinstimmen

Hier ist ein Beispiel, bei dem zwei Wörter nicht gleich klingen und daher unterschiedliche Soundex-Codes haben:

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

Ergebnis:

Water  Coffee
-----  ------
W360   C100

Wörter mit unterschiedlicher Schreibweise

Einige Wörter haben unterschiedliche Schreibweisen, je nachdem aus welchem ​​Land Sie kommen. Solche Wörter haben denselben Soundex-Code:

SELECT 
  SOUNDEX('Flavor') AS 'Flavor',
  SOUNDEX('Flavour') AS 'Flavour';

Ergebnis:

Flavor  Flavour
------  -------
F416    F416

Gleicher Sound, anderer Soundex-Code

Manchmal klingen zwei Wörter gleich, haben aber unterschiedliche Soundex-Codes. Der häufigste Grund dafür ist, dass sie mit einem anderen Buchstaben beginnen (man verwendet einen stillen Buchstaben). Wie bereits erwähnt, beginnt der Soundex-Code mit dem ersten Buchstaben des Strings (in Großbuchstaben umgewandelt). Wenn Sie also zwei Wörter haben, die genau gleich ausgesprochen werden, aber mit einem anderen Buchstaben beginnen, haben sie einen anderen Soundex-Code.

Hier sind einige Beispiele:

SELECT
    SOUNDEX('Hole') AS 'Hole',
    SOUNDEX('Whole') AS 'Whole',
    SOUNDEX('Our') AS Our,
    SOUNDEX('Hour') AS Hour;

Ergebnis:

Hole  Whole  Our   Hour
----  -----  ----  ----
H400  W400   O600  H600

Die Paare in diesem Beispiel haben unterschiedliche Soundex-Codes, nur weil ihr Anfangsbuchstabe unterschiedlich ist.