Oracleでは、SOUNDEX()
関数は、引数の音声表現を含む文字列を返します。これはSoundex文字列として知られています。
Soundexは、英語で発音されるように、音で名前にインデックスを付けるための音声アルゴリズムです。 2つの単語が同じように聞こえる場合は、同じSoundex文字列を使用する必要があります。 2つの単語が似ているように聞こえるが、まったく同じではない場合、それらのSoundex文字列は似ているように見えますが、まったく同じではない可能性があります。
この関数は、Soundex文字列を返す文字列という1つの引数を受け入れます。
構文
構文は次のようになります:
SOUNDEX(char)
char
Soundex文字列を返す文字列です。 CHAR
の任意のデータ型にすることができます 、VARCHAR2
、NCHAR
、またはNVARCHAR2
。戻り値は引数と同じデータ型です。
例
基本的な例は次のとおりです。
SELECT SOUNDEX('Bat')
FROM DUAL;
結果:
B300
似ているが異なる発音の単語から返されたSoundex文字列を比較する別の例を次に示します。
SELECT
SOUNDEX('Bat'),
SOUNDEX('Cat'),
SOUNDEX('Cap')
FROM DUAL;
結果:
SOUNDEX('BAT') SOUNDEX('CAT') SOUNDEX('CAP') _________________ _________________ _________________ B300 C300 C100
そして、これは同じように聞こえない単語を比較するものです:
SELECT
SOUNDEX('Ponzi'),
SOUNDEX('Bracket'),
SOUNDEX('Heavy')
FROM DUAL;
結果:
SOUNDEX('PONZI') SOUNDEX('BRACKET') SOUNDEX('HEAVY') ___________________ _____________________ ___________________ P520 B623 H100
完全一致
異なる単語であり、意味が異なるにもかかわらず、Soundex文字列が一致する単語のペアの例を次に示します。
SELECT
SOUNDEX('Dam') AS Dam,
SOUNDEX('Damn') AS Damn,
SOUNDEX('Too') AS Too,
SOUNDEX('Two') AS Two
FROM DUAL;
結果:
DAM DAMN TOO TWO _______ _______ _______ _______ D500 D500 T000 T000
データベースの例
データベースクエリからSoundex文字列を取得する例を次に示します。
SELECT
country_name,
SOUNDEX(country_name)
FROM countries
FETCH FIRST 10 ROWS ONLY;
結果:
COUNTRY_NAME SOUNDEX(COUNTRY_NAME) _______________ ________________________ Argentina A625 Australia A236 Belgium B425 Brazil B624 Canada C530 Switzerland S326 China C500 Germany G655 Denmark D562 Egypt E213
SOUNDEX()
を使用することもできます WHERE
指定された単語のように聞こえる行のみを返す句:
SELECT
employee_id,
first_name,
last_name
FROM employees
WHERE SOUNDEX(first_name) = SOUNDEX('Stephen');
結果:
EMPLOYEE_ID FIRST_NAME LAST_NAME ______________ _____________ ____________ 100 Steven King 128 Steven Markle 138 Stephen Stiles
空の文字列
指定された引数ごとに空の文字列が渡されると、次のようになります。
SET NULL 'null';
SELECT SOUNDEX('')
FROM DUAL;
結果:
null
デフォルトでは、SQLclおよびSQL * Plusは、null
の場合は常に空白を返します。 SQL SELECT
の結果として発生します 声明。
ただし、SET NULL
は使用できます 返される別の文字列を指定します。ここでは、文字列null
を指定しました 返却する必要があります。
ヌル引数
null
を渡す null
を返します :
SELECT SOUNDEX(null)
FROM DUAL;
結果:
null
引数がありません
SOUNDEX()
の呼び出し 引数を渡さないとエラーが発生します:
SELECT SOUNDEX()
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT SOUNDEX() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
また、あまりにも多くの引数を渡すと、エラーが発生します:
SELECT SOUNDEX('Gosh', 'Dang')
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT SOUNDEX('Gosh', 'Dang') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: