SQL道場 文字列関数 SOUNDEX関数
SQLでSOUNDEXキーを求めるSOUNDEX関数について記載しています。
対応データベース:SQL Server MySQL DB2 Oracle
SOUNDEX関数の文法
SELECT SOUNDEX(文字列) FROM テーブル
引数 | 文字列 | 文字列型 |
返値 | 文字列型 4文字コードのSOUNDEX文字列を戻します。 |
SQL Server
引数 | 文字列 | 文字データの英数字式です。 「引数」には定数、変数、または列を指定できます。 |
返値 | varchar |
SOUNDEX関数は4文字の文字列のSOUNDEXキーを文字列で戻します。似たように発音される単語に関して同じSOUNDEXキーが生成されるため、発音はしっているがスペルがわからない単語の検索にSOUNDEX関数を利用できます。
MySQL
文字列内のアルファベット以外の文字はすべて無視されます。 A から Z までの範囲外の国際アルファベット文字はすべて、母音として処理されます。
現在実装されているこの関数は、文字列の言語が英語である場合にのみ機能するように設計されています。 その他の言語の文字列では、信頼できる結果が生成されない可能性があります。この関数では、文字列でマルチバイト文字セット (utf-8 など) が使用されている場合に、整合性のある結果が生成されることは保証されません。 詳細は、Bug #22638 を参照してください。
SQL Server(マイクロソフト公式)
SOUNDEX では、英数字の文字列が、英語での読み上げ時の文字列の発音方法に基づいた 4 文字コードに変換されます。 コードの最初の文字の最初の文字は 「引数」 、大文字に変換されます。 コードの 2 番目から 4 番目までの文字は式の中の文字を表す数字です。 A、E、I、O、U、H、W、Y の各文字は、文字列の先頭の文字である場合を除き無視されます。 4 文字コードを生成するために、必要に応じて、末尾にゼロが追加されます。
様々な文字列からの SOUNDEX コードを比較して、読み上げ時の文字列の発音がどの程度類似しているかを確認できます。 DIFFERENCE 関数では 2 つの文字列に対して SOUNDEX が実行され、これらの文字列について SOUNDEX コードがどの程度類似しているかを示す整数が返されます。
SOUNDEX は照合順序に依存します。 文字列関数は入れ子にすることができます。
実行例
MySQLの実行例
/* MySQL 発音が似た単語を検索するサンプル */
SELECT SOUNDEX('Kant'),name,soundex(name) FROM testdb.WORK;
SQLServerの実行例
/* SQL Server 発音が似た単語を検索するサンプル */
SELECT SOUNDEX('Kant'),name,soundex(name) FROM [testdb].[dbo].[WORK];