目前看到兩種比較常用的填充的方法,這裡總結記一下:
1、使用lpad函式或者rpad函式(這裡先總結有這個可以用,至於細節上怎麼用後面擴充套件)
--比如將港股****轉為內地****的6位數
select lpad('
9003
', 6, '
0') as stock_code from dual;
結果是:
row_num
stock_code
1009003
這裡表示的是利用lpad函式,將字串『9003』自動在左邊用『0』單字元作為子串填充為6位數字串。
如果sql改為這樣:
--將01作為子串,進行右邊填充至字串長度為10
select rpad('
9003
', 10, '
01') as stock_code from dual;
結果是:
stock_code
9003010101
注意:如果沒有寫填充子串的話,子串預設為空格,並且最後的字串的長度還是引數裡寫的目標串要轉化的字串長度。比如:
select rpad('9003
', 10) as stock_code from dual;
結果串的長度還是10.
2、第二種方法是:將填充字串顯式地現出來,與目標串拼接起來,最後用right或者left函式取。這個的好處是,填充的字串可以是沒有規則的字串。比如:
selectleft('
6007'||
'abcdefghijklmn
', 11) as stock_code from dual;
結果是:
stock_code
6007abcdefg
這個用法的話注意兩個問題:
》使用left函式的話,拼接子串在右邊;right函式的話,拼接的子串在右邊;
》假如目標串的長度與拼接子串之和小於引數規定的返回串的長度,那麼返回結果僅僅是:目標串+拼接串(或者:拼接串+目標串)。這個是跟lpad或者rpad函式不同的地方。
printf從右向左計算,從左向右列印
include int main printf d,d n x,x 函式,從右向左計算,然後從左向右輸出。首先計算x 取出x的值,此時x等於0,這個0留給printf語句輸出之用。然後執行x x 1 這時x 等於1 輸出時,從左向右輸出,先輸出1,再輸出0。最後x的值為1。int ptr arr p...
走馬觀花遊C 之向左?向右?
課後作業 通過分支和迴圈語句了解條件邏輯 計算0到20之間,能被3整除的整數。新建乙個名為leftorrightdemo的控制台應用 net core 應用程式,並在static void main string args 方法中,寫下如下 並執行 這段 主要是用來判斷賦值給變數a值的能不能被3整除...
mysql移動列列 不是在mysql中向左移動的列
我正在研究 mysql資料庫.我有一張 這張表包含 employeeid和reportingemployeeid列 select e3.reportingemployeeid as level0,e2.reportingemployeeid as level1,e1.reportingemploye...