Oracle中常用的函式

2021-10-01 04:28:51 字數 4645 閱讀 8693

解釋:如果引數一expr1為空(包括null和『』),則結果為expr2的值,如果expr1不為空,則結果為expr1的值。

sql> select nvl(null,'1') from dual;

nvl(null,'1')

-------------

1sql> select nvl('','1') from dual;

nvl('','1')

-----------

1sql> select nvl('a','1') from dual;

nvl('a','1')

------------

asql>

解釋:如果引數expr1值為空,則結果為expr3的值,如果expr1不為空,則結果為expr2的值。

sql> select nvl2(null,'1','2') from dual;

nvl2(null,'1','2')

------------------

2sql> select nvl2('','1','2') from dual;

nvl2('','1','2')

----------------

2sql> select nvl2('a','1','2') from dual;

nvl2('a','1','2')

-----------------

1sql>

解釋:引數1:目標字串,引數2:最終生成字串的長度,引數3:填充字元(可以沒有)。

此方法表示從左開始擷取字串,擷取的長度為padded_length的值。如果有第三個引數,則表示在字串(第乙個引數)左邊填充字元(pad_string的值)。如果字串的長度小於引數padded_length的值,則在字串前面補充空格。注意最後乙個sql例子。

sql> select lpad('123',10) from dual;

lpad('123',10)

--------------

123sql> select lpad('1234567890',10) from dual;

lpad('1234567890',10)

---------------------

1234567890

sql> select lpad('1234567890',5) from dual;

lpad('1234567890',5)

--------------------

12345

sql> select lpad('123',10,'0') from dual;

lpad('123',10,'0')

------------------

0000000123

sql> select lpad('123',10,'x') from dual;

lpad('123',10,'x')

------------------

******x123

sql> select lpad('123',10,'abc') from dual;

lpad('123',10,'abc')

--------------------

abcabca123

sql>

解釋:此方法和上面的lpad()一樣,不過這個是從右邊開始的。

sql> select rpad('abc',5) from dual;

rpad('abc',5)

-------------

abcsql> select rpad('abcdefg',5) from dual;

rpad('abcdefg',5)

-----------------

abcde

sql> select rpad('abc',5,'0') from dual;

rpad('abc',5,'0')

-----------------

abc00

sql> select rpad('abc',10,'123') from dual;

rpad('abc',10,'123')

--------------------

abc1231231

sql>

解釋:此函式用來比較兩個值的大小,如果expr1>expr2,返回1,如果expr1 select sign(5-3) from dual;

sign(5-3)

----------

1sql> select sign(5-10) from dual;

sign(5-10)

----------

-1sql> select sign(5-5) from dual;

sign(5-5)

----------

0sql>解釋:如果條件滿足值1,則結果為返回值1,如果條件滿足值2,則結果為返回值2,以此類推,如果都不滿足,則結果為預設值。

具體含義如下,

sql> select decode('符合條件','符合條件','正確','不符合條件','錯誤','未知') from dual;

decode('符合條件','符合條件','正確','不符合條件','錯誤','未知')

--------------------------------------------

正確sql> select decode('不符合條件','符合條件','正確','不符合條件','錯誤','未知') from dual;

decode('不符合條件','符合條件','正確','不符合條件','錯誤','未知')

---------------------------------------------

錯誤sql> select decode('條件','符合條件','正確','不符合條件','錯誤','未知') from dual;

decode('條件','符合條件','正確','不符合條件','錯誤','未知')

------------------------------------------

未知sql>

比如我有一張表t_hao_coala_account(客戶賬戶表):

id

customer_name

***

birthday

principal

balance

arrearage

bill_date1張三

12010/12/1

5000.00

1000.00

4000.00103

王五11987/6/11

30000.00

1500.00

28500.0052

李四12007/7/18

10000.00

8000.00

2000.00124

你22019/12/1

2000.00

0.00

2000.00205

哈哈22019/12/1

20000.00

20000.00

0.00156

拉拉11985/2/13

8000.00

6000.00

2000.00

81.將性別轉換成漢字:principal:本金,balance:餘額,arrearage:欠款,bill_date:賬單日。

select t.id,t.customer_name,decode(t.***,'1','男','2','女') from t_hao_coala_account t

2.比較大小。找出欠款大於餘額的:

select t.id,t.customer_name,decode(sign(t.arrearage-t.balance),0,'持平','1','欠款大於餘額','-1','欠款較少') as result 

3.本金等於10000放在最前面,其次是本金大於10000的,同時按本金公升序排列

oracle中常用函式大全

1 數值型常用函式 函式 返回值 樣例 顯示 ceil n 大於或等於數值n的最小整數 select ceil 10.6 from dual 11 floor n 小於等於數值n的最大整數 select ceil 10.6 from dual 10 mod m,n m除以n的餘數,若n 0,則返回m...

Oracle中常用的函式之nvl 函式

從兩個表示式返回乙個非 null 值。語法 nvl eexpression1,eexpression2 引數 eexpression1,eexpression2 如 果 eexpression1 的計算結果為 null 值,則 nvl 返回 eexpression2。如果 eexpression1 ...

Oracle 中常用函式注意事項

1.nvl 字段,x 字段值等於null就這個函式得到的結果就是 x 一般用於存在空值比較的情況下,比如欄位a與字段b都是int型,其中乙個等於null另乙個為非空值,你使用a b是不成立的,使用此條件查詢你將丟失這條本來不相等的資料,可以如此用法nvl 字段,1 nvl 字段,1 這樣就可以得到想...