Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2025 (17.x) Preview
Azure SQL Database Azure SQL
Managed Instance
SQL Database v Microsoft Fabric
Použijte přibližné shody řetězců k ověření, zda jsou dva řetězce podobné, a spočítání rozdílu mezi dvěma řetězci. Tato funkce slouží k identifikaci řetězců, které se můžou lišit kvůli poškození znaků. Příčiny poškození můžou zahrnovat pravopisné chyby, transponované znaky, chybějící znaky nebo zkratky. Přibližné porovnávání řetězců používá algoritmy k detekci podobných zvukových řetězců.
Poznámka:
- Porovnávání přibližných řetězců je v současné době v předběžné verzi.
- SQL Server podporuje porovnávání neostrých řetězců představené v ukázce SQL Server 2025 (17.x).
- Porovnávání přibližných řetězců je k dispozici ve službě Azure SQL Managed Instance, která je nakonfigurována se zásadou aktualizace Always-up-to-date.
Přibližné funkce
Funkce | Popis |
---|---|
EDIT_DISTANCE | Vypočítá počet vložení, odstranění, nahrazení a provedení potřebných k transformaci jednoho řetězce na druhý. |
Podobnost podle editační vzdálenosti | Vypočítá hodnotu podobnosti v rozsahu od 0 (označující žádnou shodu) na 100 (označující úplnou shodu). |
JARO_WINKLER_DISTANCE | Vypočítá vzdálenost úprav mezi dvěma řetězci a dává přednost řetězcům, které odpovídají od začátku nastavené délky předpony. |
JARO_WINKLER_SIMILARITY | Vypočítá hodnotu podobnosti v rozsahu od 0 (označující žádnou shodu) na hodnotu 1 (označující úplnou shodu). |
Poznámka:
V současné době funkce nedodržují sémantiku porovnání definovanou nastavením kolace, jako je nerozlišování velkých a malých písmen a další pravidla specifická pro kolaci. Po implementaci podpory pravidel kolace bude výstup funkcí odrážet tyto sémantiky a může se odpovídajícím způsobem změnit.
Příklady
Následující příklady ukazují funkce porovnávání přibližných řetězců.
Příklad tabulky
Než začnete spouštět ukázkové dotazy, vytvořte a naplňte ukázkovou tabulku.
Pokud chcete vytvořit a naplnit ukázkovou tabulku, připojte se k neprodukční uživatelské databázi a spusťte následující skript:
-- 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
Příklad EDIT_DISTANCE
SELECT WordUK, WordUS, EDIT_DISTANCE(WordUK, WordUS) AS Distance
FROM WordPairs
WHERE EDIT_DISTANCE(WordUK, WordUS) <= 2
ORDER BY Distance ASC;
Návraty:
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
Příklad 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;
Návraty:
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
Příklad 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;
Návraty:
WordUK WordUS Distance
------------------------------ ------------------------------ -----------
Practice Practice 0
Travelling Traveling 0.01999998
Neighbour Neighbor 0.02222222
Aluminium Aluminum 0.02222222
Theatre Theater 0.02857143
Flavour Flavor 0.02857143
Centre Center 0.03333336
Colour Color 0.03333336
Honour Honor 0.03333336
Catalogue Catalog 0.04444444
Programme Program 0.04444444
Metre Meter 0.04666668
Příklad JARO_WINKLER_SIMILARITY
SELECT WordUK, WordUS, JARO_WINKLER_SIMILARITY(WordUK, WordUS) AS Similarity
FROM WordPairs
WHERE JARO_WINKLER_SIMILARITY(WordUK, WordUS) > 0.9
ORDER BY Similarity DESC;
Návraty:
WordUK WordUS Similarity
------------------------------ ------------------------------ -----------
Practice Practice 1
Travelling Traveling 0.98
Neighbour Neighbor 0.9777778
Aluminium Aluminum 0.9777778
Flavour Flavor 0.9714286
Theatre Theater 0.9714286
Centre Center 0.9666666
Colour Color 0.9666666
Honour Honor 0.9666666
Catalogue Catalog 0.9555556
Programme Program 0.9555556
Metre Meter 0.9533333
Organise Organize 0.95
Practise Practice 0.95
Defence Defense 0.9428572
Analyse Analyze 0.9428572
Příklad dotazu se všemi funkcemi
Následující dotaz ukazuje všechny funkce regulárních výrazů, které jsou aktuálně k dispozici.
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,
CAST(JARO_WINKLER_SIMILARITY(T.source_string, T.target_string)*100 as int) as JW_Similarity
FROM (VALUES('Black', 'Red'),
('Colour', 'Yellow'),
('Colour', 'Color'),
('Microsoft', 'Msft'),
('Regex', 'Regex')) as T(source_string, target_string);
Návraty:
source_string target_string ED_Distance JW_Distance ED_Similarity JW_Similarity
-------------- -------------- -------------- -------------- -------------- --------------
Black Red 5 1 0 0
Colour Yellow 5 0.4444444 17 55
Colour Color 1 0.03333336 83 96
Microsoft Msft 5 0.4916667 44 50
Regex Regex 0 0 100 100
Vyčištění
Po dokončení použití ukázkových dat odstraňte ukázkovou tabulku.
IF OBJECT_ID('dbo.WordPairs', 'U') IS NOT NULL
BEGIN
DROP TABLE dbo.WordPairs;
END