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: