1. 程式人生 > >Oracle 中 decode 函式用法 與lpad結合

Oracle 中 decode 函式用法 與lpad結合



//decode 函式用法:

decode(條件,值1,返回值1,值2,返回值2,...值n,返回值n,預設值)

該函式的含義如下:
IF 條件=值1 THEN
    RETURN(翻譯值1)
ELSIF 條件=值2 THEN
    RETURN(翻譯值2)
    ......
ELSIF 條件=值n THEN
    RETURN(翻譯值n)
ELSE
    RETURN(預設值)
END IF

decode(欄位或欄位的運算,值1,值2,值3)

       這個函式執行的結果是,當欄位或欄位的運算的值等於值1時,該函式返回值2,否則返回值3
 當然值1,值2,值3也可以是表示式,這個函式使得某些sql語句簡單了許多

使用方法: 

1、比較大小
select decode(sign(變數1-變數2),-1,變數1,變數2) from dual; --取較小值
sign()函式根據某個值是0、正數還是負數,分別返回0、1、-1
例如:
變數1=10,變數2=20
則sign(變數1-變數2)返回-1,decode解碼結果為“變數1”,達到了取較小值的目的。

 //lpad

lpad( string, padded_length, [ pad_string ] ) string 準備被填充的字串; padded_length 填充之後的字元串長度,也就是該函式返回的字串長度,如果這個數量比原字串的長度要短,lpad函式將會把字串擷取成從左到右的n個字元; pad_string
填充字串,是個可選引數,這個字串是要貼上到string的左邊,如果這個引數未寫,lpad函式將會在string的左邊貼上空格。 lpad與decode相結合,如何使主鍵的值自動加1並在前面補0: select LPAD(decode(count(記錄編號),0,1,max(to_number(記錄編號)+1)),14,'0') 記錄編號 from tetdmis