SOUNDEX (Transact-SQL)
適用対象: 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 )
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
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
は含まれないため、Smythe
と y
に対する 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)