sql >> Databasteknik >  >> RDS >> Oracle

Hur lägger man till inledande nolla i ett nummer i Oracle SQL-fråga?

Du kan göra det på två sätt.

Metod 1

Använder LPAD .

Till exempel,

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-satsen är bara för att bygga exempeldata för demo, i din faktiska fråga gör bara:

lpad(removal_count, 5, '0')

Kom ihåg ett nummer kan inte ha inledande nollor . Utdata från ovanstående fråga är en sträng och inte ett nummer .

Metod 2

Använder TO_CHAR och 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>

Uppdatera :För att undvika det extra inledande utrymmet som används för minustecken, använd FM i TO_CHAR format:

Utan FM:

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

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

Med FM:

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

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


  1. Typkonvertering. Vad gör jag med ett PostgreSQL OID-värde i libpq i C?

  2. Använda PostgreSQL logisk replikering för att upprätthålla en alltid uppdaterad läs-/skriv-TEST-server

  3. Vad är nytt i MariaDB 10.4

  4. Varför skapar man en vy i en databas?