sql >> データベース >  >> RDS >> Oracle

OracleのSOUNDEX()関数

    Oracleでは、SOUNDEX() 関数は、引数の音声表現を含む文字列を返します。これはSoundex文字列として知られています。

    Soundexは、英語で発音されるように、音で名前にインデックスを付けるための音声アルゴリズムです。 2つの単語が同じように聞こえる場合は、同じSoundex文字列を使用する必要があります。 2つの単語が似ているように聞こえるが、まったく同じではない場合、それらのSoundex文字列は似ているように見えますが、まったく同じではない可能性があります。

    この関数は、Soundex文字列を返す文字列という1つの引数を受け入れます。

    構文

    構文は次のようになります:

    SOUNDEX(char)

    char Soundex文字列を返す文字列です。 CHARの任意のデータ型にすることができます 、VARCHAR2NCHAR 、または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:

    1. 文字列を分割してSQLServerのテーブルに値を挿入する方法

    2. Postgres/JSON-すべての配列要素を更新します

    3. SQL Serverトリガーは、新しい行から別のテーブルに値を挿入します

    4. メディアファイルをデータベースに保存するための最良の方法は何ですか?