적용 대상: SQL Server 2025(17.x)
Microsoft Fabric에서Azure SQL Database
Azure SQL Managed Instance
SQL 데이터베이스 미리 보기
유사하거나 대략적인 문자열 일치를 사용하여 두 문자열이 비슷한지 확인하고 두 문자열 간의 차이를 계산합니다. 이 기능을 사용하여 문자 손상으로 인해 다를 수 있는 문자열을 식별합니다. 손상 원인에는 맞춤법 오류, 변형된 문자, 누락된 문자 또는 약어가 포함될 수 있습니다. 유사 항목 문자열 일치는 알고리즘을 사용하여 유사한 소리 문자열을 검색합니다.
비고
- 유사 문자열 매칭은 현재 미리보기 상태입니다.
- SQL Server 2025(17.x) 미리 보기에서 도입된 SQL Server의 퍼지 문자열 일치 지원
퍼지 함수
기능 | 설명 |
---|---|
EDIT_DISTANCE | 한 문자열을 다른 문자열로 변환하는 데 필요한 삽입, 삭제, 대체 및 트랜스포지션 수를 계산합니다. |
편집 거리 유사성 | 0에서 100(전체 일치를 나타낸)까지의 유사성 값을 계산합니다. |
JARO_WINKLER_DISTANCE | 설정된 접두사 길이에 대해 처음부터 일치하는 문자열에 대한 기본 설정을 제공하는 두 문자열 간의 편집 거리를 계산합니다. |
JARO_WINKLER_SIMILARITY | 0에서 1(전체 일치를 나타낸)까지의 유사성 값을 계산합니다. |
비고
현재 함수는 대/소문자 구분 및 기타 데이터 정렬 관련 규칙과 같은 데이터 정렬 설정에 정의된 비교 의미 체계를 준수하지 않습니다. 데이터 정렬 규칙에 대한 지원이 구현되면 함수의 출력은 이러한 의미 체계를 반영하고 그에 따라 변경될 수 있습니다.
예시
다음 예제에서는 유사 문자열 일치 함수를 보여 줍니다.
예제 표
예제 쿼리를 실행하기 전에 예제 테이블을 만들고 채웁니다.
예제 테이블을 만들고 채하려면 비프로덕션 사용자 데이터베이스에 연결하고 다음 스크립트를 실행합니다.
-- 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;
반환 값:
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
예제 편집 거리 유사성
SELECT WordUK, WordUS, EDIT_DISTANCE_SIMILARITY(WordUK, WordUS) AS Similarity
FROM WordPairs
WHERE EDIT_DISTANCE_SIMILARITY(WordUK, WordUS) >=75
ORDER BY Similarity DESC;
반환 값:
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;
반환 값:
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
예제 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;
반환 값:
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
모든 함수를 사용하는 예제 쿼리
다음 쿼리는 현재 사용할 수 있는 모든 정규식 함수를 보여 줍니다.
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);
반환 값:
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
청소
예제 데이터 사용을 완료한 후 예제 테이블을 삭제합니다.
IF OBJECT_ID('dbo.WordPairs', 'U') IS NOT NULL
BEGIN
DROP TABLE dbo.WordPairs;
END