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

OracleのTRIM()関数

    Oracleでは、TRIM() 関数を使用すると、文字列の側面から文字をトリミングできます。

    先頭の文字、末尾の文字、またはその両方をトリミングできます。

    デフォルトでは空白をトリミングしますが、オプションで別の1つまたは複数の文字を指定してトリミングすることができます。

    構文

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

    TRIM([ { { LEADING | TRAILING | BOTH }
             [ trim_character ]
           | trim_character
           }
           FROM 
         ]
         trim_source
        )

    両方のtrim_character およびtrim_source VARCHAR2にすることができます または、VARCHAR2に暗黙的に変換できる任意のデータ型 。

    簡単な例を次に示します。

    SELECT TRIM('.' FROM '...Cat...')
    FROM DUAL;

    結果:

       TRIM('.'FROM'...CAT...') 
    ___________________________ 
    Cat                        

    この場合、指定された文字(. )文字列の両側から削除されました。

    どちら側から削除するかを指定しなかったため、両側から削除されました。

    BOTHを含めることで同じ結果を得ることができます キーワード:

    SELECT TRIM(BOTH '.' FROM '...Cat...')
    FROM DUAL;

    結果:

       TRIM(BOTH'.'FROM'...CAT...') 
    _______________________________ 
    Cat                            

    主人公のトリム

    ここでも、先頭の文字のみが削除されています:

    SELECT TRIM(LEADING '.' FROM '...Cat...')
    FROM DUAL;

    結果:

       TRIM(LEADING'.'FROM'...CAT...') 
    __________________________________ 
    Cat...                            

    トリムトレーリングキャラクター

    そして、ここでは末尾の文字のみが削除されています:

    SELECT TRIM(TRAILING '.' FROM '...Cat...')
    FROM DUAL;

    結果:

       TRIM(TRAILING'.'FROM'...CAT...') 
    ___________________________________ 
    ...Cat                             

    デフォルトの文字

    この例では、トリミングする文字を指定していないため、空白をトリミングします。

    SELECT TRIM(' Cat ')
    FROM DUAL;

    結果:

       TRIM('CAT') 
    ______________ 
    Cat           

    両側から空白をトリミングするときの効果を確認するのはそれほど簡単ではありません。

    両側から空白が削除されたことを簡単に確認できる別の例を次に示します。

    SELECT 
        'My' || ' Fat ' || 'Cat',
        'My' || TRIM(' Fat ') || 'Cat'
    FROM DUAL;

    結果:

       'MY'||'FAT'||'CAT'    'MY'||TRIM('FAT')||'CAT' 
    _____________________ ___________________________ 
    My Fat Cat            MyFatCat                   

    数字

    文字列とトリム文字はVARCHAR2にすることができます または、VARCHAR2に暗黙的に変換できる任意のデータ型 、次のような数値を渡すことができます。ただし、戻り値はVARCHAR2です。 。

    SELECT TRIM(LEADING 0 FROM 007)
    FROM DUAL;

    結果:

       TRIM(LEADING0FROM007) 
    ________________________ 
    7                      

    ここでは、別の番号がトリミングされています:

    SELECT TRIM(LEADING 1 FROM 117)
    FROM DUAL;

    結果:

       TRIM(LEADING1FROM117) 
    ________________________ 
    7                        

    ヌル値

    文字列またはトリム文字のいずれかがnullの場合 結果はnullです :

    SET NULL 'null';
    
    SELECT 
        TRIM(null FROM '...Cat...'),
        TRIM(BOTH FROM null),
        TRIM(null FROM null)
    FROM DUAL;

    結果:

       TRIM(NULLFROM'...CAT...')    TRIM(BOTHFROMNULL)    TRIM(NULLFROMNULL) 
    ____________________________ _____________________ _____________________ 
    null                         null                  null                 

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

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

    空の文字列のトリミング

    トリム文字として空の文字列を渡すと、nullになります :

    SET NULL 'null';
    
    SELECT TRIM('' FROM '   Cat')
    FROM DUAL;

    結果:

       TRIM(''FROM'CAT') 
    ____________________ 
    null                

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

    SET NULL 'null';
    
    SELECT TRIM(' ' FROM '   Cat')
    FROM DUAL;

    結果:

       TRIM(''FROM'CAT') 
    ____________________ 
    Cat                 

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

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

    SELECT TRIM()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT TRIM()
    FROM DUAL
    Error at Command Line : 1 Column : 13
    Error report -
    SQL Error: ORA-00936: missing expression
    00936. 00000 -  "missing expression"
    *Cause:    
    *Action:

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

    SELECT TRIM(' Cat ', 2)
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT TRIM(' Cat ', 2)
    FROM DUAL
    Error at Command Line : 1 Column : 20
    Error report -
    SQL Error: ORA-00907: missing right parenthesis
    00907. 00000 -  "missing right parenthesis"
    *Cause:    
    *Action:

    RTRIM()も参照してください およびLTRIM() 文字列の各辺をトリミングするためのよりターゲットを絞った関数。これらの関数を使用すると、文字列から複数の文字を削除することもできます。


    1. sqlcmdを使用してSQLServerからCSV形式でデータをエクスポートするにはどうすればよいですか?

    2. クロス集計クエリをAccessで通常のクエリに戻す方法

    3. ORACLE SQL*Plusチュートリアル

    4. DjangoにUnicode文字列を保存するときにMySQLの誤った文字列値エラー