SOUNDEX (Transact-SQL)

Gibt einen aus vier Zeichen bestehenden (SOUNDEX) Code zur Bewertung der Ähnlichkeit von zwei Zeichenfolgen zurück.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

SOUNDEX ( character_expression )

Argumente

  • character_expression
    Ist ein alphanumerischer Ausdruck der Zeichendaten. character_expression kann eine Konstante, Variable oder Spalte sein.

Rückgabetypen

varchar

Hinweise

SOUNDEX konvertiert eine alphanumerische Zeichenfolge in einen aus vier Zeichen bestehenden Code, um ähnlich klingende Wörter oder Namen zu finden. Beim ersten Zeichen des Codes handelt es sich um das erste Zeichen von character_expression, umgewandelt in Großbuchstaben. Das zweite bis vierte Zeichen des Codes sind Zahlen, die die Buchstaben im Ausdruck darstellen. Die Buchstaben A, E, I, O, U, STD, W und Y werden ignoriert, es sei denn, sie entsprechen dem ersten Buchstaben der Zeichenfolge. Nullen werden ggf. am Ende hinzugefügt, um einen vier Zeichen langen Code zu erzeugen. Weitere Informationen zum SOUNDEX-Code finden Sie unter The Soundex Indexing System (Soundex-Indizierungssystem).

SOUNDEX-Codes aus verschiedenen Zeichenfolgen können verglichen werden, um Ähnlichkeiten zwischen gesprochenen Zeichenfolgen festzustellen. Die DIFFERENCE-Funktion führt eine SOUNDEX-Funktion für zwei Zeichenfolgen aus und gibt eine ganze Zahl zurück, die die Ähnlichkeit der SOUNDEX-Codes für diese Zeichenfolgen darstellt.

SOUNDEX ist sortierungsabhängig. Zeichenfolgenfunktionen können geschachtelt werden.

SOUNDEX-Kompatibilität

In früheren Versionen von SQL Server wurde von der SOUNDEX-Funktion eine Teilmenge der SOUNDEX-Regeln angewendet. Unter dem Datenbank-Kompatibilitätsgrad 110 wendet SQL Server 2012 einen vollständigeren Regelsatz an.

Möglicherweise sind die Indizes, Heaps oder CHECK-Einschränkungen, die die SOUNDEX-Funktion verwenden, nach dem Upgrade auf Kompatibilitätsgrad 110 erneut zu erstellen.

  • Ein Heap, der eine permanent berechnete Spalte beinhaltet, die mit SOUNDEX definiert wurde, kann erst abgefragt werden, wenn der Heap durch Ausführen der ALTER TABLE <table> REBUILD-Anweisung neu erstellt wurde.

  • Mit SOUNDEX definierte CHECK-Einschränkungen werden beim Upgrade deaktiviert. Führen Sie zum Aktivieren der Einschränkung die ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL-Anweisung aus.

  • Indizes (einschließlich indizierter Sichten), die eine permanent berechnete Spalte beinhalten, die mit SOUNDEX definiert wurde, können erst abgefragt werden, wenn der Index durch Ausführen der ALTER INDEX ALL ON <object> REBUILD-Anweisung neu erstellt wurde.

Beispiele

Das folgende Beispiel zeigt die SOUNDEX-Funktion sowie die verwandte DIFFERENCE-Funktion. Im ersten Beispiel werden die standardmäßigen SOUNDEX-Werte für alle Konsonanten zurückgegeben. Die Rückgabe von SOUNDEX für Smith und Smythe ergibt das gleiche SOUNDEX-Ergebnis, da alle Vokale, der Buchstabe y, doppelt vorhandene Buchstaben und der Buchstabe h nicht einbezogen werden.

-- Using SOUNDEX
SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe');

Dies ist das Resultset. Gültig für eine Latin1_General-Sortierung.

----- ----- 
S530  S530  

(1 row(s) affected)

Die DIFFERENCE-Funktion vergleicht den Unterschied der Werte, die von der SOUNDEX-Funktion zurückgegeben werden. Das folgende Beispiel zeigt zwei Zeichenfolgen, die sich nur in den Vokalen unterscheiden. Der zurückgegebene Wert beträgt 4 (größtmögliche Übereinstimmung).

-- Using DIFFERENCE
SELECT DIFFERENCE('Smithers', 'Smythers');
GO

Dies ist das Resultset. Gültig für eine Latin1_General-Sortierung.

----------- 
4           

(1 row(s) affected)

Im folgenden Beispiel weisen die Zeichenfolgen unterschiedliche Konsonanten auf; die Funktion gibt daher den Wert 2 (geringere Übereinstimmung) zurück.

SELECT DIFFERENCE('Anothers', 'Brothers');
GO

Dies ist das Resultset. Gültig für eine Latin1_General-Sortierung.

----------- 
2           

(1 row(s) affected)

Siehe auch

Verweis

DIFFERENCE (Transact-SQL)

Zeichenfolgenfunktionen (Transact-SQL)

ALTER DATABASE-Kompatibilitätsgrad (Transact-SQL)