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
26
Jadi 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 3
Jadi 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 13
Syarat 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 13
LULUS!!!
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: