Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2025 (17.x)
Azure SQL-Datenbank
Azure SQL Managed Instance
SQL-Datenbank in Microsoft Fabric
Verwenden Sie Fuzzy- oder ungefähre Zeichenfolgenvergleiche, um zu überprüfen, ob zwei Zeichenfolgen ähnlich sind, und berechnen Sie die Differenz zwischen zwei Zeichenfolgen. Verwenden Sie diese Funktion, um Zeichenfolgen zu identifizieren, die aufgrund von Zeichenbeschädigung unterschiedlich sein können. Fehler umfassen Rechtschreibfehler, vertauschte Zeichen, fehlende Zeichen oder Abkürzungen. Fuzzy-Zeichenfolgenabgleich verwendet Algorithmen, um ähnlich klingende Zeichenfolgen zu erkennen.
Note
Fuzzy-Zeichenfolgenabgleich befindet sich derzeit in der Vorschau für SQL Server 2025 (17.x) und erfordert die Aktivierung der Vorschaufunktion Datenbank eingegrenzte Konfiguration.
Ungefähres Zeichenfolgen-Matching ist in Azure SQL Managed Instance mit SQL Server 2025 oder der Immer-aktuellAktualisierungsrichtlinie verfügbar.
Fuzzyfunktionen
| Function | Description |
|---|---|
| EDIT_DISTANCE | Berechnet die Anzahl der Einfügungen, Löschungen, Ersetzungen und Transpositionen, die erforderlich sind, um eine Zeichenkette in eine andere umzuwandeln. |
| EDIT_DISTANCE_SIMILARITY | Berechnet einen Ähnlichkeitswert, der von 0 (keine Übereinstimmung) bis 100 (vollständige Übereinstimmung) reicht. |
| JARO_WINKLER_DISTANCE | Berechnet die Editierdistanz zwischen zwei Zeichenfolgen, wobei Zeichenfolgen bevorzugt werden, die von Anfang an für eine bestimmte Präfixlänge übereinstimmen. |
| JARO_WINKLER_SIMILARITY | Berechnet einen Ähnlichkeitswert, der von 0 (keine Übereinstimmung) bis 100 (vollständige Übereinstimmung) reicht. |
Note
Derzeit entsprechen die Funktionen nicht der Vergleichssemantik, die durch Kollationseinstellungen definiert ist, z. B. Groß-/Kleinschreibungsinsensitivität und andere kollationsspezifische Regeln. Sobald die Unterstützung für Sortierregeln implementiert wurde, spiegelt die Ausgabe der Funktionen diese Semantik wider und kann sich entsprechend ändern.
Examples
Die folgenden Beispiele veranschaulichen die Fuzzy-Zeichenfolgenabgleichsfunktionen.
Beispieltabelle
Bevor Sie Beispielabfragen ausführen können, erstellen und füllen Sie eine Beispieltabelle.
Zum Erstellen und Auffüllen der Beispieltabelle stellen Sie eine Verbindung mit einer Nichtproduktionsbenutzerdatenbank her, und führen Sie das folgende Skript aus:
-- Step 1: Create the table
CREATE TABLE WordPairs
(
WordID INT IDENTITY (1, 1) PRIMARY KEY, -- Auto-incrementing ID
WordUK NVARCHAR (50), -- UK English word
WordUS NVARCHAR (50) -- US English word
);
-- Step 2: Insert the data
INSERT INTO WordPairs (WordUK, WordUS)
VALUES ('Colour', 'Color'),
('Flavour', 'Flavor'),
('Centre', 'Center'),
('Theatre', 'Theater'),
('Organise', 'Organize'),
('Analyse', 'Analyze'),
('Catalogue', 'Catalog'),
('Programme', 'Program'),
('Metre', 'Meter'),
('Honour', 'Honor'),
('Neighbour', 'Neighbor'),
('Travelling', 'Traveling'),
('Grey', 'Gray'),
('Defence', 'Defense'),
('Practise', 'Practice'), -- Verb form in UK
('Practice', 'Practice'), -- Noun form in both
('Aluminium', 'Aluminum'),
('Cheque', 'Check'); -- Bank cheque vs. check
Beispiel EDIT_DISTANCE
SELECT WordUK,
WordUS,
EDIT_DISTANCE(WordUK, WordUS) AS Distance
FROM WordPairs
WHERE EDIT_DISTANCE(WordUK, WordUS) <= 2
ORDER BY Distance ASC;
Returns:
WordUK WordUS Distance
------------------------------ ------------------------------ -----------
Practice Practice 0
Aluminium Aluminum 1
Honour Honor 1
Neighbour Neighbor 1
Travelling Traveling 1
Grey Gray 1
Defence Defense 1
Practise Practice 1
Colour Color 1
Flavour Flavor 1
Organise Organize 1
Analyse Analyze 1
Catalogue Catalog 2
Programme Program 2
Metre Meter 2
Centre Center 2
Theatre Theater 2
Beispiel EDIT_DISTANCE_SIMILARITY
SELECT WordUK,
WordUS,
EDIT_DISTANCE_SIMILARITY(WordUK, WordUS) AS Similarity
FROM WordPairs
WHERE EDIT_DISTANCE_SIMILARITY(WordUK, WordUS) >= 75
ORDER BY Similarity DESC;
Returns:
WordUK WordUS Similarity
------------------------------ ------------------------------ -----------
Practice Practice 100
Travelling Traveling 90
Aluminium Aluminum 89
Neighbour Neighbor 89
Organise Organize 88
Practise Practice 88
Defence Defense 86
Analyse Analyze 86
Flavour Flavor 86
Colour Color 83
Honour Honor 83
Catalogue Catalog 78
Programme Program 78
Grey Gray 75
Beispiel JARO_WINKLER_DISTANCE
SELECT WordUK,
WordUS,
JARO_WINKLER_DISTANCE(WordUK, WordUS) AS Distance
FROM WordPairs
WHERE JARO_WINKLER_DISTANCE(WordUK, WordUS) <= .05
ORDER BY Distance ASC;
Returns:
WordUK WordUS Distance
------------------------------ ------------------------------ -----------
Practice Practice 0
Travelling Traveling 0.02
Neighbour Neighbor 0.0222222222222223
Aluminium Aluminum 0.0222222222222223
Theatre Theater 0.0285714285714286
Flavour Flavor 0.0285714285714286
Centre Center 0.0333333333333333
Colour Color 0.0333333333333333
Honour Honor 0.0333333333333333
Catalogue Catalog 0.0444444444444444
Programme Program 0.0444444444444444
Metre Meter 0.0466666666666667
Beispiel JARO_WINKLER_SIMILARITY
SELECT WordUK,
WordUS,
JARO_WINKLER_SIMILARITY(WordUK, WordUS) AS Similarity
FROM WordPairs
WHERE JARO_WINKLER_SIMILARITY(WordUK, WordUS) > 90
ORDER BY Similarity DESC;
Returns:
WordUK WordUS Similarity
------------------------------ ------------------------------ -----------
Practice Practice 100
Aluminium Aluminum 98
Neighbour Neighbor 98
Travelling Traveling 98
Colour Color 97
Flavour Flavor 97
Centre Center 97
Theatre Theater 97
Honour Honor 97
Catalogue Catalog 96
Programme Program 96
Metre Meter 95
Organise Organize 95
Practise Practice 95
Analyse Analyze 94
Defence Defense 94
Beispielabfrage mit allen Funktionen
Die folgende Abfrage veranschaulicht alle derzeit verfügbaren Funktionen für reguläre Ausdrücke.
SELECT T.source_string,
T.target_string,
EDIT_DISTANCE(T.source_string, T.target_string) AS ED_Distance,
JARO_WINKLER_DISTANCE(T.source_string, T.target_string) AS JW_Distance,
EDIT_DISTANCE_SIMILARITY(T.source_string, T.target_string) AS ED_Similarity,
JARO_WINKLER_SIMILARITY(T.source_string, T.target_string) AS JW_Similarity
FROM (VALUES ('Black', 'Red'),
('Colour', 'Yellow'),
('Colour', 'Color'),
('Microsoft', 'Msft'),
('Regex', 'Regex')
) AS T(source_string, target_string);
Returns:
source_string target_string ED_Distance JW_Distance ED_Similarity JW_Similarity
-------------- -------------- -------------- --------------------- -------------- --------------
Black Red 5 1 0 0
Colour Yellow 5 0.444444444444445 17 55
Colour Color 1 0.0333333333333333 83 96
Microsoft Msft 5 0.491666666666667 44 50
Regex Regex 0 0 100 100
Aufräumen
Nachdem Sie die Beispieldaten verwendet haben, löschen Sie die Beispieltabelle:
IF OBJECT_ID('dbo.WordPairs', 'U') IS NOT NULL
BEGIN
DROP TABLE dbo.WordPairs;
END