次の方法で共有


SOUNDEX (Transact-SQL)

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 2012 ではより完全なルール セットが適用されます。

互換性レベル 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 値がすべての子音に対して返されます。 母音、文字 y、2 文字の連続、および文字 h は含まれないため、Smith と Smythe に対する SOUNDEX では同じ結果が返されます。

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

以下に結果セットを示します。Latin1_General の照合順序で有効です。

----- ----- 
S530  S530  

(1 row(s) affected)

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

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

以下に結果セットを示します。Latin1_General の照合順序で有効です。

----------- 
4           

(1 row(s) affected)

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

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

以下に結果セットを示します。Latin1_General の照合順序で有効です。

----------- 
2           

(1 row(s) affected)

関連項目

参照

DIFFERENCE (Transact-SQL)

文字列関数 (Transact-SQL)

ALTER DATABASE 互換性レベル (Transact-SQL)