前のページ|次のページ

SOUNDEX関数

文字列をエンコードして検索しやすくします。

カテゴリ: 文字
制限事項: SOUNDEXアルゴリズムは英語中心に機能します。
この関数は、I18Nレベル0準拠しており、SBCSデータ向けに設計されています。この関数をDBCSまたはMBCSデータの処理に使用しないでください。

構文

SOUNDEX(argument)

必須引数

argument

文字定数、変数または式を指定します。

詳細

返される変数の長さ

DATAステップで、まだ長さが割り当てられていない変数にSOUNDEX関数から値が返される場合、その変数には200バイトの長さが割り当てられます。

基本

SOUNDEX関数は、Margaret K. OdellとRobert C. Russel(米国特許1261167(1918)および1435663(1922))によって開発されたアルゴリズムに従って文字列をエンコードします。このアルゴリズムはKnuthのThe Art of Computer Programming, Volume 3で説明されています。(リファレンスを参照。)SOUNDEXアルゴリズムは英語中心に機能するため、英語以外の言語ではあまり有効ではありません。
SOUNDEX関数は、次のステップに従ってエンコードしたargumentのコピーを返します。
  1. argumentの最初の文字を保持し、後続の文字を破棄します。
    A E H I O U W Y
  2. 次の数値をこれらの文字クラスに割り当てます。
    • 1:B F P V
    • 2:C G J K Q S X Z
    • 3:D T
    • 4:L
    • 5:M N
    • 6:R
  3. 2つ以上の隣接する文字がステップ2の同一クラスとなる場合、最初の文字を除いてすべてを破棄します。(ここでの隣接は、文字を破棄する前の単語中の位置を意味します)。
Knuthによって説明されているアルゴリズムでは、末尾にゼロを付加して結果の長さが4となるよう切り捨てます。これらの処理は、他のSAS関数で実行できます。

SASステートメントとその結果を次に示します。
SASステートメント
結果
x=soundex('Paul');
put x;
 
P4
word='amnesty';
x=soundex(word);
put x;
 
A523
前のページ|次のページ|ページの先頭へ