メインコンテンツまでスキップ
に最終更新

SOUNDEX

説明​

SOUNDEX 関数は、文字列の Soundex 符号を計算します。Soundex は、英単語を発音を表す符号に変換する音声アルゴリズムです。発音が似ている単語は同じ符号になります。

符号化規則: 大文字の英字一文字に数字三桁が続く 4 文字の符号を返します(例: S530)。

構文​

SOUNDEX(<expr>)

パラメータ​

パラメータ説明
<expr>Soundex 符号を計算する文字列(ASCII 文字のみサポート)。型: VARCHAR

戻り値​

文字列の Soundex 符号を表す VARCHAR(4) 型の値を返します。

特殊なケース:

  • 引数が NULL の場合は NULL を返します
  • 文字列が空、または英字を含まない場合は空文字列を返します
  • ASCII 英字のみを処理し、それ以外の文字は無視します
  • 非 ASCII 文字が含まれるとエラーになります

例​

  1. 基本的な使い方: 単語の符号化
SELECT soundex('Doris');
+------------------+
| soundex('Doris') |
+------------------+
| D620 |
+------------------+
  1. 発音が似ている単語は同じ符号になります
SELECT soundex('Smith'), soundex('Smyth');
+------------------+------------------+
| soundex('Smith') | soundex('Smyth') |
+------------------+------------------+
| S530 | S530 |
+------------------+------------------+
  1. 空文字列の処理
SELECT soundex('');
+-------------+
| soundex('') |
+-------------+
| |
+-------------+
  1. NULL 値の処理
SELECT soundex(NULL);
+---------------+
| soundex(NULL) |
+---------------+
| NULL |
+---------------+
  1. 空文字列の場合は空文字列を返します
SELECT soundex('');
+-------------+
| soundex('') |
+-------------+
| |
+-------------+
  1. 英字以外の文字のみの場合は空文字列を返します
SELECT soundex('123@*%');
+-------------------+
| soundex('123@*%') |
+-------------------+
| |
+-------------------+
  1. 英字以外の文字を無視します
SELECT soundex('R@b-e123rt'), soundex('Robert');
+-----------------------+-------------------+
| soundex('R@b-e123rt') | soundex('Robert') |
+-----------------------+-------------------+
| R163 | R163 |
+-----------------------+-------------------+
  1. 非 ASCII 文字のみの場合のエラーの例
SELECT soundex('你好');  
ERROR 1105 (HY000): errCode = 2, detailMessage = Not Supported: Not Supported: soundex only supports ASCII, but got: 你
SELECT soundex('Apache Doris 你好');
+--------------------------------+
| soundex('Apache Doris 你好') |
+--------------------------------+
| A123 |
+--------------------------------+

キーワード​

SOUNDEX