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

Oracleで先行ゼロを使用して数値をフォーマットする2つの方法

    Oracle Databaseを使用して数値を先行ゼロを持つようにフォーマットする場合、それを文字列に変換し、それに応じてフォーマットする必要があります。

    TO_CHAR(number)を使用できます 先行ゼロを含む数値をフォーマットする関数。

    そして、おそらくあまり知られていない事実は、LPAD()も使用できるということです 先行ゼロで数値を埋める関数。

    TO_CHAR() 機能

    TO_CHAR(number)を使用する場合 関数、0を使用します 先頭および/または末尾のゼロを含めるように要素をフォーマットします。

    例:

    SELECT TO_CHAR(7, 'fm000')
    FROM DUAL;

    結果:

    007

    これが9と比較した場合です フォーマット要素:

    SELECT 
        TO_CHAR(7, 'fm999') AS "9",
        TO_CHAR(7, 'fm000') AS "0"
    FROM DUAL;

    結果:

       9      0 
    ____ ______ 
    7    007   

    先行ゼロの数は、0の数によって決まります。 フォーマット要素と数値の桁数:

    SELECT 
        TO_CHAR(77, 'fm0') AS "r1",
        TO_CHAR(77, 'fm00000') AS "r2",
        TO_CHAR(777, 'fm00000') AS "r3",
        TO_CHAR(7777, 'fm00000') AS "r4",
        TO_CHAR(77777, 'fm00000') AS "r5"
    FROM DUAL;

    結果:

       r1       r2       r3       r4       r5 
    _____ ________ ________ ________ ________ 
    ##    00077    00777    07777    77777   

    fm format修飾子は、結果に含まれる可能性のある先頭または末尾のパディングを抑制します。たとえば、数値が負の場合、マイナス記号が前に付けられます。ただし、数値が正の場合、記号は含まれず、プラス記号があったはずの場所にスペースが表示されます。

    これを示す例を次に示します。

    SELECT 
        TO_CHAR(-7, '000') AS "Minus Sign",
        TO_CHAR(7, '000') AS "Padded",
        TO_CHAR(7, 'fm000') AS "Not Padded"
    FROM DUAL;

    結果:

       Minus Sign    Padded    Not Padded 
    _____________ _________ _____________ 
    -007           007      007          

    LPAD() 機能

    または、LPAD()を使用することもできます 先行ゼロを含む数値をフォーマットする関数。

    例:

    SELECT LPAD(7, 3, '0')
    FROM DUAL;

    結果:

    007

    別の例:

    SELECT 
        LPAD(77, 1, '0') AS "r1",
        LPAD(77, 5, '0') AS "r2",
        LPAD(777, 5, '0') AS "r3",
        LPAD(7777, 5, '0') AS "r4",
        LPAD(77777, 5, '0') AS "r5"
    FROM DUAL;

    結果:

       r1       r2       r3       r4       r5 
    _____ ________ ________ ________ ________ 
    7     00077    00777    07777    77777   

    LPAD()のメリットの1つ 前の方法に比べて、結果を他の文字の前に付けることができます。先行ゼロである必要はありません。

    SELECT 
        LPAD(77, 1, '.') AS "r1",
        LPAD(77, 5, '.') AS "r2",
        LPAD(777, 5, '.') AS "r3",
        LPAD(7777, 5, '.') AS "r4",
        LPAD(77777, 5, '.') AS "r5"
    FROM DUAL;

    結果:

       r1       r2       r3       r4       r5 
    _____ ________ ________ ________ ________ 
    7     ...77    ..777    .7777    77777   

    1. MariaDB ROWNUM()の説明

    2. ORA-28000を解決する方法アカウントがロックされています

    3. 1つのセルに複数の値を含むSQLクエリ

    4. postgresqlでグローバル変数を定義することは可能ですか?