SOUNDEX (Transact-SQL)
Applies to:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
2 つの文字列の類似性を評価する 4 文字 (SOUNDEX
) コードを返します。
構文
SOUNDEX ( character_expression )
引数
character_expression
文字データの英数字 式。 character_expression には定数、変数、または列を指定できます。
戻り値の型
varchar
解説
SOUNDEX
は、英数字の文字列を、英語で読み上げられたときに文字列がどのように聞こえるかに基づく 4 文字のコードに変換します。 コードの最初の文字の最初の文字は character_expression, 、大文字に変換されます。 コードの 2 番目から 4 番目までの文字は式の中の文字を表す数字です。 文字 A
、E
、I
、O
、U
、H
、W
、および 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
値がすべての子音に対して返されます。
Smith
と Smythe
の SOUNDEX
を返すと、すべての母音、文字 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