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

Oracle SQLクエリの数値に先行ゼロを追加するにはどうすればよいですか?

    2つの方法でそれを行うことができます。

    方法1

    LPADの使用 。

    たとえば、

    SQL> WITH DATA(num) AS(
      2  SELECT 540 FROM dual UNION ALL
      3  SELECT 60 FROM dual UNION ALL
      4  SELECT 2 FROM dual
      5  )
      6  SELECT num, lpad(num, 5, '0') num_pad FROM DATA;
    
           NUM NUM_P
    ---------- -----
           540 00540
            60 00060
             2 00002
    
    SQL>
    

    WITH句は、デモ用のサンプルデータを作成するためだけのものであり、実際のクエリでは次のようにします。

    lpad(removal_count, 5, '0')
    

    番号を覚えておいてください 先行ゼロを持つことはできません 。上記のクエリの出力は文字列です 番号ではありません 。

    方法2

    TO_CHARの使用 およびフォーマットモデル:

    SQL> WITH DATA(num) AS(
      2  SELECT 540 FROM dual UNION ALL
      3  SELECT 60 FROM dual UNION ALL
      4  SELECT 2 FROM dual
      5  )
      6  SELECT num, to_char(num, '00000') num_pad FROM DATA;
    
           NUM NUM_PA
    ---------- ------
           540  00540
            60  00060
             2  00002
    
    SQL>
    

    更新 :マイナス記号に使用される余分な先頭のスペースを避けるために、 FMを使用してください TO_CHAR内 フォーマット:

    FMなし:

    SELECT TO_CHAR(1, '00000') num_pad,
      LENGTH(TO_CHAR(1, '00000')) tot_len
    FROM dual;
    
    NUM_PAD    TOT_LEN
    ------- ----------
     00001           6 
    

    FMの場合:

    SELECT TO_CHAR(1, 'FM00000') num_pad,
      LENGTH(TO_CHAR(1, 'FM00000')) tot_len
    FROM dual;
    
    NUM_PAD    TOT_LEN
    ------- ----------
    00001            5
    


    1. SQL Server(T-SQL)の既存のテーブルに外部キー制約を追加する方法

    2. PostgreSQLシーケンスのHibernateの使用は、シーケンステーブルに影響しません

    3. Tanh()がPostgreSQLでどのように機能するか

    4. なぜJOIN句とWHERE条件を使用するのですか?