次の方法で共有


SOUNDEX (Transact-SQL)

Applies to:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

2 つの文字列の類似性を評価する 4 文字 (SOUNDEX) コードを返します。

Transact-SQL 構文表記規則

構文

SOUNDEX ( character_expression )

引数

character_expression

文字データの英数字 character_expression には定数、変数、または列を指定できます。

戻り値の型

varchar

解説

SOUNDEX は、英数字の文字列を、英語で読み上げられたときに文字列がどのように聞こえるかに基づく 4 文字のコードに変換します。 コードの最初の文字の最初の文字は character_expression, 、大文字に変換されます。 コードの 2 番目から 4 番目までの文字は式の中の文字を表す数字です。 文字 AEIOUHW、および Y は、文字列の最初の文字でない限り無視されます。 4 文字コードを生成するために、必要に応じて、末尾にゼロが追加されます。 SOUNDEX コードの詳細については、「Soundex Indexing System」を参照してください。

異なる文字列の SOUNDEX コードを比較して、読み上げられたときに文字列がどのように聞こえるかを確認できます。 DIFFERENCE() 関数は、2 つの文字列に対して 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;
    

ある。 SOUNDEX を使用する

次の例は、SOUNDEX 関数と関連する DIFFERENCE 関数を示しています。 最初の例では、標準 SOUNDEX 値がすべての子音に対して返されます。 SmithSmytheSOUNDEX を返すと、すべての母音、文字 y、二重文字、および文字 hが含まれていないため、同じ SOUNDEX 結果が返されます。

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

結果セットは次のとおりです。 Latin1_General 照合順序に対して有効です。

S530  S530

B. DIFFERENCE を使用する

DIFFERENCE 関数は、SOUNDEX パターンの結果を比較します。 次の例では、母音のみが異なる 2 つの文字列を示します。 返される値は、類似性が最も高い 4 です。

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

結果セットは次のとおりです。 Latin1_General 照合順序に対して有効です。

4

次の例では子音が異なるため、類似性が低い 2 が返されます。

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

結果セットは次のとおりです。 Latin1_General 照合順序に対して有効です。

2