Menambahkan nol di depan jika panjangnya tidak sama dengan 10 digit menggunakan sql

Saya mencoba menggabungkan 2 tabel tetapi masalah saya adalah salah satu tabel memiliki 10 digit nomor dan tabel lainnya mungkin memiliki 10 digit nomor atau kurang. Oleh karena itu, saya kehilangan beberapa data jadi yang ingin saya lakukan adalah memeriksa panjangnya terlebih dahulu jika panjangnya kurang dari 10 digit maka saya ingin menambahkan angka nol di depannya sehingga saya dapat menjadikannya 10 digit angka. Saya ingin melakukan ini ketika saya bergabung jadi saya tidak yakin apakah ini mungkin. Berikut ini contohnya jika saya memiliki 251458 di TABLE_WITHOUT_LEADING_ZERO maka saya ingin mengubahnya seperti ini: 0000251458. Inilah yang saya miliki sejauh ini:

select ACCT_NUM, H.CODE
 FROM TABLE_WITH_LEEDING_ZERO D,  TABLE_WITHOUT_LEADING_ZERO H
 WHERE substring(D.ACCT_NUM from position('.' in D.ACCT_NUM) + 2) = cast (H.CODE as varchar (10))

terima kasih


person moe    schedule 01.11.2013    source sumber
comment
Karena saya tidak tahu bagaimana melakukan ini di postgresql, saya menghapus jawaban saya.   -  person Giannis Paraskevopoulos    schedule 01.11.2013
comment
Gunakan sesuatu seperti select lpad('12345', 10, '0000000000')   -  person Kaf    schedule 01.11.2013
comment
kaf, terima kasih banyak, solusi anda membantu. Terima kasih lagi   -  person moe    schedule 01.11.2013
comment
10 angka nol pada parameter ketiga dapat dikurangi menjadi 1: select lpad('12345', 10, '0');   -  person steviethecat    schedule 03.11.2015


Jawaban (2)


Di Netezza Anda dapat menggunakan LPAD:

select lpad(s.sample,10,0) as result
from (select 12345 as sample) s

    result
   -------
  0000012345

Namun akan lebih efisien jika menghilangkan angka nol seperti pada contoh di bawah ini:

select cast(trim(Leading '0' from s.sample) as integer) as result
from (select '0000012345' as sample) s

    result
   -------
    12345
person Niederee    schedule 27.11.2013

Alternatif lain:

SELECT TO_CHAR(12345,'fm0000000000');
  to_char   
------------
 0000012345
person bma    schedule 01.11.2013
comment
Namun perhatikan bahwa lpad() biasanya juga berfungsi pada string yang berisi non-digit sementara to_char() hanya berfungsi saat mengonversi dari tipe angka ke string. - person MarHoff; 11.01.2017