다음을 통해 공유


SOUNDEX(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)Microsoft Fabric의 SQL 분석 엔드포인트Microsoft Fabric의 웨어하우스

두 문자열의 유사성을 평가하는 4자(SOUNDEX) 코드를 반환합니다.

Transact-SQL 구문 표기 규칙

구문

SOUNDEX ( character_expression )

인수

character_expression

문자 데이터의 영숫자 . character_expression은 상수, 변수 또는 열일 수 있습니다.

반환 형식

varchar

설명

SOUNDEX 영숫자 문자열을 영어로 말할 때 문자열이 어떻게 들리는지에 따라 4자 코드로 변환합니다. 코드의 첫 번째 문자는 character_expression의 첫 번째 문자이며 대문자로 변환됩니다. 코드의 두 번째부터 네 번째 문자까지의 문자는 식의 문자를 나타내는 숫자입니다. 문자열의 첫 번째 문자가 아닌 한 A, E, I, O, U, H, WY 문자는 무시됩니다. 4자로 된 코드를 생성하기 위해 필요한 경우 끝에 0이 추가됩니다. SOUNDEX 코드에 대한 자세한 내용은 Soundex 인덱싱 시스템참조하세요.

서로 다른 문자열의 SOUNDEX 코드를 비교하여 말할 때 문자열이 얼마나 비슷한지 확인할 수 있습니다. DIFFERENCE() 함수는 두 문자열에 대해 SOUNDEX 수행하고 해당 문자열에 대해 SOUNDEX 코드가 얼마나 유사한지를 나타내는 정수를 반환합니다.

SOUNDEX 데이터 정렬에 민감합니다. 문자열 함수는 중첩될 수 있습니다.

SOUNDEX 호환성

이전 버전의 SQL Server에서 SOUNDEX 함수는 SOUNDEX 규칙의 하위 집합을 적용했습니다. 데이터베이스 호환성 수준 110 이상에서 SQL Server는 더 자세한 규칙 집합을 적용합니다.

호환성 수준 110 이상으로 업그레이드한 후에는 SOUNDEX 함수를 사용하는 인덱스, 힙 또는 CHECK 제약 조건을 다시 빌드해야 할 수 있습니다.

  • SOUNDEX 정의된 지속형 계산 열을 포함하는 힙은 다음 문을 실행하여 힙을 다시 작성할 때까지 쿼리할 수 없습니다.

    ALTER TABLE <table> REBUILD;
    
  • SOUNDEX 정의된 CHECK 제약 조건은 업그레이드 시 사용하지 않도록 설정됩니다. 제약 조건을 사용하도록 설정하려면 다음 문을 실행합니다.

    ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL;
    
  • SOUNDEX 정의된 지속형 계산 열을 포함하는 인덱스(인덱싱된 뷰 포함)는 다음 문을 실행하여 인덱스를 다시 작성할 때까지 쿼리할 수 없습니다.

    ALTER INDEX ALL ON <object> REBUILD;
    

예제

A. SOUNDEX 사용

다음 예제에서는 SOUNDEX 함수 및 관련 DIFFERENCE 함수를 보여줍니다. 첫 번째 예에서는 모든 자음에 대해 표준 SOUNDEX 값이 반환됩니다. SmithSmythe 대한 SOUNDEX 반환하면 모든 모음, 문자 y, 두 배의 문자 및 h문자가 포함되지 않으므로 동일한 SOUNDEX 결과가 반환됩니다.

SELECT SOUNDEX('Smith'),
       SOUNDEX('Smythe');

결과 집합은 다음과 같습니다. Latin1_General 데이터 정렬에 유효합니다.

S530  S530

B. DIFFERENCE 사용

DIFFERENCE 함수는 SOUNDEX 패턴 결과의 차이를 비교합니다. 다음 예에서는 모음만 다른 두 문자열을 보여 줍니다. 반환되는 차이는 4(가능한 최저 차이)입니다.

SELECT DIFFERENCE('Smithers', 'Smythers');
GO

결과 집합은 다음과 같습니다. Latin1_General 데이터 정렬에 유효합니다.

4

다음 예에서는 문자열의 자음이 다르므로 반환되는 차이는 2이며 더 많은 차이가 납니다.

SELECT DIFFERENCE('Anothers', 'Brothers');
GO

결과 집합은 다음과 같습니다. Latin1_General 데이터 정렬에 유효합니다.

2