Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie fügt man einer Zahl in einer Oracle SQL-Abfrage eine führende Null hinzu?

Sie können dies auf zwei Arten tun.

Methode 1

Mit LPAD .

Zum Beispiel

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>

Die WITH-Klausel dient nur dazu, Beispieldaten für die Demo zu erstellen, in Ihrer eigentlichen Abfrage tun Sie einfach:

lpad(removal_count, 5, '0')

Denken Sie daran, eine Zahl darf keine führenden Nullen haben . Die Ausgabe der obigen Abfrage ist ein String und keine Nummer .

Methode 2

Verwenden von TO_CHAR und Formatmodell:

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>

Aktualisieren :Um das zusätzliche führende Leerzeichen zu vermeiden, das für das Minuszeichen verwendet wird, verwenden Sie FM im TO_CHAR Format:

Ohne FM:

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

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

Mit FM:

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

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