次の方法で共有


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) コードを返します。

Transact-SQL 構文表記規則

構文

SOUNDEX ( character_expression )  

引数

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

戻り値の型

varchar

解説

SOUNDEX では、英数字の文字列が、英語での読み上げ時の文字列の発音方法に基づいた 4 文字コードに変換されます。 コードの最初の文字の最初の文字は character_expression, 、大文字に変換されます。 コードの 2 番目から 4 番目までの文字は式の中の文字を表す数字です。 A、E、I、O、U、H、W、Y の各文字は、文字列の先頭の文字である場合を除き無視されます。 4 文字コードを生成するために、必要に応じて、末尾にゼロが追加されます。 SOUNDEX コードの詳細については、次を参照してください。 The 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 関数、およびこれに関連した DIFFERENCE 関数を示しています。 最初の例では、標準 SOUNDEX 値がすべての子音に対して返されます。 母音、文字 SOUNDEX、2 文字の連続、および文字 Smith は含まれないため、Smythey に対する h では同じ結果が返されます。

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

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

S530  S530    

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

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

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

4             

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

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

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

2             

参照

DIFFERENCE (Transact-SQL)
文字列関数 (Transact-SQL)
ALTER DATABASE 互換性レベル (Transact-SQL)