SOUNDEX (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

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

Transact-SQL-Syntaxkonventionen

Syntax

SOUNDEX ( character_expression )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

character_expression
Ein alphanumerischer Ausdruck der Zeichendaten. character_expression kann eine Konstante, Variable oder Spalte sein.

Rückgabetypen

varchar

Bemerkungen

SOUNDEX konvertiert eine alphanumerische Zeichenfolge in einen vierstelligen Code, der davon abhängig ist, wie sich eine Zeichenfolge anhört, wenn diese in englischer Sprache ausgesprochen wird. 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 (Das 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 oder höher wendet SQL Server 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 oder höher erneut zu erstellen.

  • Ein Heap, der eine persistierte berechnete Spalte enthält, 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 persistierte berechnete Spalte enthalten, 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');  

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

S530  S530    

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  

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

4             

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  

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

2             

Weitere Informationen

DIFFERENCE (Transact-SQL)
Zeichenfolgenfunktionen (Transact-SQL)
ALTER DATABASE-Kompatibilitätsgrad (Transact-SQL)