1. 程式人生 > >Lpad與Rpad的用法

Lpad與Rpad的用法

筆者,在前段時間,在思考的時候,發現了Lpad的另外一種語法;

首先:在這之前,先看看我們通常的用法:

Lpad(string,n,[pad_string])--通常第三個引數可以預設為‘ ’一個空格

Rpad(string,n,[pad_string])

select lpad(ename, 10) string _1,
          lpad(ename, 10 , '*') string _2
  from emp

 lpad(ename, 10)的執行結果,是預設用了‘ ’一個空格;

接著,我們就來看看我最近遇到的另外一種用法:

通常情況下,Lpad(string,n,[pad_string])中的string ,我們都會當成字串來看待,若是是一個空格呢?

有時候,我們會遇到這樣的情況,就是要將一個字串左邊新增‘ ’空格,來進行錯位,而字串的長度值又是不確定的,怎麼辦呢?

那麼,我們就來向下看:

Lpad(string,n,[pad_string])--第三個引數可以預設,其實lpad可以只要兩個引數;

將string 替代成‘ ’空格,我們來看看效果 :Lpad(' ',level)--level 就是層次查詢得到的level值;

我們以EMP中的SCOTT使用者為例,看看下面的 SQL:

select b.empno,
       b.ename,
       level,
       lpad(b.empno, level*4, ' ') string_1,
       lpad(' ', level*4-4)||b.empno string_2
  from emp b
 start with b.ename = 'SCOTT'
connect by prior b.mgr = b.empno;

EMPNO ENAME         LEVEL    STRING_1                   STRING_2
----- ---------- ---------- -------------------------------------------------------------------------------
 7788 SCOTT                   1            7788                             7788
 7566 JONES                   2                    7566                             7566
 7839 KING                      3                            7839                             7839

執行結果顯示,兩者的效果一樣,倘若字串不知道長度的情況下,我們就可以用這種方法替代正常用法了;

通常情況下,我們用的都是Lpad;Rpad的用法很少用。

最後,

分享以下,若是長度不知道的情況,該如何用lpad來填充:

lpad(b.empno, length(b.empno)level*4, ' ')--通常用的都是英文字母,所以就用length()來求取字元長度;