適用対象: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric 内の SQL データベース
あいまい一致または近似文字列照合を使用して、2 つの文字列が類似しているかどうかを確認し、2 つの文字列の差を計算します。 この機能を使用して、文字の破損が原因で異なる可能性がある文字列を識別します。 破損には、スペル ミス、文字の入れ替え、文字の欠落、省略形が含まれます。 あいまい文字列マッチングでは、アルゴリズムを使用して似た音の文字列を検出します。
Note
あいまい文字列一致は現在、SQL Server 2025 (17.x) のプレビュー段階であり、 プレビュー機能データベース スコープ構成を有効にする必要があります。
あいまい文字列一致は、AZURE SQL Managed Instance で SQL Server 2025 または Always-up-to-date更新ポリシーを使用して使用できます。
あいまい関数
| Function | Description |
|---|---|
| EDIT_DISTANCE | ある文字列を別の文字列に変換するために必要な、挿入、削除、置換、転置の数を計算します。 |
| EDIT_DISTANCE_SIMILARITY | 0 (一致がないことを示す) から 100 (完全一致を示す) までの類似性値を計算します。 |
| JARO_WINKLER_DISTANCE | 2 つの文字列間の編集距離を計算し、設定されたプレフィックス長の先頭から一致する文字列を優先します。 |
| JARO_WINKLER_SIMILARITY | 0 (一致がないことを示す) から 100 (完全一致を示す) までの類似性値を計算します。 |
Note
現時点では、関数は、大文字と小文字の区別や他の照合順序固有の規則など、照合順序の設定で定義された比較セマンティクスに準拠していません。 照合順序規則のサポートが実装されると、関数の出力はこれらのセマンティクスを反映し、それに応じて変更される可能性があります。
Examples
あいまい文字列一致関数の例を次に示します。
テーブルの例
サンプル クエリを実行する前に、サンプル テーブルを作成して設定します。
サンプル テーブルを作成して設定するには、非運用ユーザー データベースに接続し、次のスクリプトを実行します。
-- 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
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
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
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
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
すべての関数を含むクエリの例
次のクエリは、現在使用できるすべての正規表現関数を示しています。
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
クリーンアップ
サンプル データの使用が完了したら、サンプル テーブルを削除します。
IF OBJECT_ID('dbo.WordPairs', 'U') IS NOT NULL
BEGIN
DROP TABLE dbo.WordPairs;
END