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

OracleのRTRIM()関数

    Oracleでは、RTRIM() 関数を使用すると、文字列の右側の部分をトリミングできます。デフォルトでは空白を削除しますが、オプションで別の1つまたは複数の文字を指定して削除することができます。

    構文

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

    RTRIM(char [, set ])

    charの場所 およびset CHARの任意のデータ型にすることができます 、VARCHAR2NCHARNVARCHAR2CLOB 、またはNCLOB

    RTRIM charの右端から削除します setに含まれるすべての文字 setを指定しない場合 、デフォルトでは単一の空白になります。

    次に例を示します:

    SELECT RTRIM('Cat                 ')
    FROM DUAL;

    結果:

       RTRIM('CAT') 
    _______________ 
    Cat            

    ここでは、トリミングする文字を指定しなかったため、各空白は文字列の右側からトリミングされました。

    上記の例の効果を確認するのは簡単ではありません。

    別の例を次に示します。出力を元の(トリミングされていない)文字列と比較しながら、文字列を別の文字列と連結しています。

    SELECT 'Cat     ' || 'Food'
    FROM DUAL
    UNION ALL
    SELECT RTRIM('Cat     ') || 'Food'
    FROM DUAL;

    結果:

       'CAT'||'FOOD' 
    ________________ 
    Cat     Food     
    CatFood         

    文字を指定

    この例では、トリミングする文字を指定します。これにより、効果がわかりやすくなります:

    SELECT RTRIM('...Cat...', '.')
    FROM DUAL;

    結果:

       RTRIM('...CAT...','.') 
    _________________________ 
    ...Cat                    

    したがって、キャラクターは右側からトリミングされているが、左側からはトリミングされていないことがわかります。左側をトリミングするには、LTRIM()を使用します またはTRIM()

    RTRIM()に注意してください セットに含まれていないキャラクターが現れるまで、セットアップ内のキャラクターのみをトリミングします。これが私の言いたいことの例です:

    SELECT RTRIM('Cat...B...', '.')
    FROM DUAL;

    結果:

       RTRIM('CAT...B...','.') 
    __________________________ 
    Cat...B                   

    ただし、Bを含めると セット内では、異なる結果が得られます:

    SELECT RTRIM('Cat...B...', '.B')
    FROM DUAL;

    結果:

       RTRIM('CAT...B...','.B') 
    ___________________________ 
    Cat                         

    データベースの例

    データベース列の値の右側をトリミングする例を次に示します。

    SELECT 
        country_name,
        RTRIM(country_name, 'an') AS Trimmed
    FROM countries
    FETCH FIRST 5 ROWS ONLY;

    結果:

       COUNTRY_NAME     TRIMMED 
    _______________ ___________ 
    Argentina       Argenti     
    Australia       Australi    
    Belgium         Belgium     
    Brazil          Brazil      
    Canada          Canad       

    ヌル値

    引数がnullの場合 結果はnullです :

    SET NULL 'null';
    
    SELECT 
        RTRIM(null, 3),
        RTRIM('Cat ', null),
        RTRIM(null, null)
    FROM DUAL;

    結果:

       RTRIM(NULL,3)    RTRIM('CAT',NULL)    RTRIM(NULL,NULL) 
    ________________ ____________________ ___________________ 
    null             null                 null               

    デフォルトでは、SQLclおよびSQL * Plusは、nullの場合は常に空白を返します。 SQL SELECTの結果として発生します 声明。

    ただし、SET NULLは使用できます 返される別の文字列を指定します。ここでは、文字列nullを指定しました 返却する必要があります。

    空の文字列のトリミング

    2番目の引数として空の文字列を渡すと、nullになります。 :

    SET NULL 'null';
    
    SELECT RTRIM('Cat   ', '')
    FROM DUAL;

    結果:

       RTRIM('CAT','') 
    __________________ 
    null              

    ただし、空の文字列に1つのスペースを追加すると、それが変更され、文字列の右側から空白スペースが削除されます。

    SELECT RTRIM('Cat ', ' ')
    FROM DUAL;

    結果:

       RTRIM('CAT','') 
    __________________ 
    Cat               

    引数の数が正しくありません

    RTRIM()の呼び出し 引数を渡さないとエラーが返されます:

    SELECT RTRIM()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT RTRIM()
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00938: not enough arguments for function
    00938. 00000 -  "not enough arguments for function"
    *Cause:    
    *Action:

    また、間違った数の引数を渡すと、エラーが発生します:

    SELECT RTRIM('Cat', 1, '>')
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT RTRIM('Cat', 1, '>')
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00939: too many arguments for function
    00939. 00000 -  "too many arguments for function"
    *Cause:    
    *Action:

    1. AccessとExcelを一緒に使用するトップ10の理由

    2. PL/SQLのUPDATEの影響を受ける行数

    3. すべてのデータベースでインデックスステータスを取得するためのストアドプロシージャ

    4. INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE