Oracle
 sql >> Database >  >> RDS >> Oracle

Come aggiungere lo zero iniziale in un numero nella query Oracle SQL?

Potresti farlo in due modi.

Metodo 1

Utilizzo di LPAD .

Ad esempio,

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>

La clausola WITH serve solo a creare dati di esempio per la demo, nella query effettiva basta fare:

lpad(removal_count, 5, '0')

Ricorda, un numero non può avere zero iniziali . L'output della query precedente è una stringa e non un numero .

Metodo 2

Utilizzando TO_CHAR e modello di formato:

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>

Aggiorna :per evitare lo spazio iniziale aggiuntivo utilizzato per il segno meno, utilizza FM nel TO_CHAR formato:

Senza FM:

SELECT TO_CHAR(1, '00000') num_pad,
  LENGTH(TO_CHAR(1, '00000')) tot_len
FROM dual;

NUM_PAD    TOT_LEN
------- ----------
 00001           6 

Con FM:

SELECT TO_CHAR(1, 'FM00000') num_pad,
  LENGTH(TO_CHAR(1, 'FM00000')) tot_len
FROM dual;

NUM_PAD    TOT_LEN
------- ----------
00001            5