解釋:如果引數一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 這樣就可以得到想...