Postgres: LPAD Function
Saya hanya hendak perkataan panjang ini sahaja
Ada cabaran yang menarik saya dapat hari ini. Begini kisahnya.
Semasa dalam membuat program untuk integration, ada satu data dalam table yang ada keperluan spesifik - data yang disampaikan mesti dalam mempunyai panjang 13 aksara (characters) dan jika data yang disampaikan kurang daripada 13 , ‘*’ perlu digunakan.
Baik!
Perkara pertama yang muncul dalam benak fikiran saya ini adalah dengan menggunakan substring function. Mari kita cuba
select length('abcdefghijklmnopqrstuvwxyz') AS column_length;
column_length
26Jadi kita gunakan substring(<column_name>, <posisi mula>,<panjang aksara>)
select substring('abcdefghijklmnopqrstuvwxyz', 1, 13) AS column_string, length(substring('abcdefghijklmnopqrstuvwxyz', 1, 13)) AS column_length;
column_string column_length
abcdefghijklm 13
Solusi ini hanya menyelesaikan sebahagian daripada keperluan sistem tersebut. Bagaiman sekiranya, data tersebut kurang daripada 13 aksara ? Mari lihat
select substring('abc', 1, 13) AS column_string, length(substring('abc', 1, 13)) AS column_length;
column_string column_length
abc 3Jadi tidak kenakan?
Saya memperkenalkan lpad() function.
Anatomi lpad(<nama column/string>, <panjang string>, <aksara gantian>)
Mari kita uji dengan sampel data seperti di atas:
select LPAD('abcdefghijklmnopqrstuvwxyz', 13, '*') AS column_string, length(LPAD('abcdefghijklmnopqrstuvwxyz', 13, '*')) AS column_length;
column_string column_length
abcdefghijklm 13Syarat pertama LULUS .
Mari kita cuba data kedua
select LPAD('abc', 13, '*') AS column_string, length(LPAD('abc', 13, '*')) AS column_length;
column_string column_length
**********abc 13LULUS!!!
Selamat mencuba dan jangan lupa kongsikan rencana ini.
nota kecil:
Semasa dalam proses menulis rencana ini terjumpa satu function yang tidak pernah saya guna sebelum ini - function repeat() . Berikut merupakan penggunaannya
SELECT 10 as value, repeat('*', 10) AS asterisks
value asterisks
10 **********Rujukan:

