RPAD(column|expression, n,'string')
教材里的说明:填充字符值左、右调节到 n 字符位置的总宽度
详细d可以甘样理解:
判断 ‘column|expression’ 的长度length,
如果小于n, 就用‘string' 从左边或右边填充到直到 length =n 为止。
如果等于n, 就不变,返回原本的参数
如果大于n,就斩掉右边字符,直到 ‘column|expression’的length=n. 其实就系从'column|expression', 截取前n个字符拉。
例子:
小于n的情况, 'Jason' 长度为5哦
SQL> select lpad('Jason',12,'kkkkkkkkkkkkkkkkkkkkkkkkkk') from dual;
LPAD('JASON'
------------
kkkkkkkJason
SQL> select lpad('Jason',12,'ks') from dual;
LPAD('JASON'
------------
kskskskJason
大于n的情况
SQL> select lpad('Jasonbbbbbbbbbbbb',12,'ksssssssssssss') from dual;
LPAD('JASONB
------------
Jasonbbbbbbb
SQL> select rpad('Jasonbbbbbbbbbbbb',12,'ksssssssssssss') from dual;
RPAD('JASONB
------------
Jasonbbbbbbb
======================================================================================
INSTR(column|expression,‘string’, [,m], [n] )
教材说明:
从字符返值中回指定的字符,开始位置在 m,n字符长度 ( 如果 m 是负数,计数从字符值末尾开始;如果 n 被忽略,返回到串结束的所有字
符)。
高亮部分吴容易理解, 其实如果 m正数, 即系从字符第m个字符开始计, 若m系负数, 就系从字符的倒数第m个字符开始计(都是从左向右)。 若m=0 ,则m=1
例子:
SQL> select substr('Jason', 1 ,1) from dual;
S
-
J
SQL> select substr('Jason', -1 ,1) from dual;
S
-
n
SQL> select substr('Jason', -2 ,1) from dual;
S
-
o
SQL> select substr('Jason', -2 ,3) from dual;
SU
--
on
从倒数第2个字符截3个字符, 就系on了(虽然命系截取3个,但只有2
===============================================================================
ROUND(column|expression, n)
说明:
四舍五入列、表达式或值为 n 位小数位,或者,如果 n 被忽略,无小数位。(如果 n是负值,小数点左边左边的数被四舍五入)
呢个容易理解,n=2,保留2个小数位
SQL> select round(555.245,2) from dual;
ROUND(555.245,2)
----------------
555.25
SQL> select round(555.245) from dual;
ROUND(555.245)
--------------
555
SQL> select round(555.245,-1) from dual;
ROUND(555.245,-1)
-----------------
560
SQL> select round(555.245,-2) from dual;
ROUND(555.245,-2)
-----------------
600
SQL> select round(555.245,-3) from dual;
ROUND(555.245,-3)
-----------------
1000
SQL> select round(455.245,-3) from dual;
ROUND(455.245,-3)
-----------------
0
例如对2.4449999999 保留5为四舍五入, 读书时可能 2.44499999 ~ 2,445 ~ 2.45
但oracle 之考虑 2.444 ~ 2.44
SQL> select round(456.2449999999,2) from dual;
ROUND(456.2449999999,2)
-----------------------
456.24
NVL(p1,p2)
呢个好简单, 如果p1是NULL则返回p2,否则p1. 相当于sybase 的isnull拉。
NVL2(p1,p2,p3)
如果p1是NULL则返回p2,否则p3..
NULLIF(p1,p2)
如果p1等于p2 返回NULL, 否则返回p1, p1不能为NULL。
COALESCE (p1,p2,p3...pn)
返回第1个非空表达式,如果p1非空返回p1, 若p1是NULL而p2非NULL则返回p2....后面你懂的。。
Decode(p, p1, r1,
p2, r2,
p3, r3,
r0)
条件判断函数相当于 case p when p1 then r1
when p2 then r2
when p2 then r3
else r0
end