首页 > 代码库 > ORACLE函数之单行字符函数
ORACLE函数之单行字符函数
1、 ASCII(C)
说明:返回C的首字符在ASCII码中对应的十进制
举例:
SQL>SELECT ASCII(‘A‘) A,ASCII(‘a‘) B,ASCII(‘0‘) C,ASCII(‘ ‘) D FROM DUAL;
A B C D
-------------------- ---------- ----------
65 97 48 32
2、 CHR(N)
说明:返回十进制ASCII码N对应的字符
举例:
SQL>SELECT CHR(65) A,CHR(97) B,CHR(48) C,CHR(32) D FROM DUAL;
A B CD
- - --
A a 0
3、 CONCAT(C1,C2)
说明:返回将C2添加到C1后面而形成的字符串。如果C1为NULL,那么返回C2;如果C2为NULL,那么返回C1;如果C1和C2都为NULL,那么返回NULL
举例:
SQL>SELECT CONCAT(‘010-‘,‘8888‘) A,CONCAT(NULL,‘8888‘) B,CONCAT(‘010-‘,NULL)C,CONCAT(NULL,NULL) D FROM DUAL;
A B C D
------------ ---- -
010-88888888 010-
4、 INITCAP(C)
说明:返回C的每个首字符都大写、其他字符都小写的字符串。单词之间以空格,控制字符和标点符号分界
举例:
SQL>SELECT INITCAP(‘you are‘) A FROM DUAL;
A
-------
YouAre
5、 INSTR(C1,C2[,N[,M]])
说明:在C1中从N开始搜索C2第M次出现的位置,并返回该位置数字。如果N是负数,则搜索从右向左进行,但位置数字仍然从左向右计算。N和M默认都是1
举例:
SQL>SELECT INSTR(‘aabbccddee‘,‘cc‘) A,INSTR(‘aabbccddee‘,‘cc‘,5)B,INSTR(‘aabbccddeecc‘,‘cc‘,1,2) C,INSTR(‘aabbccddee‘,‘cc‘,-6) D FROM DUAL;
A B C D
-------------------- ---------- ----------
5 5 11 5
6、 LENGTH(C)
说明:返回C的长度。包括所有的后缀空格;如果C是空字符串或者NULL,则返回NULL
举例:
SQL> SELECT LENGTH(‘aabbccdd‘) A,LENGTH(‘‘) B,LENGTH(NULL) C FROM DUAL;
A B C
---------- ---------- ----------
8
7、 LOWER(C)
说明:返回将C全部字符都小写之后的字符串
举例:
SQL>SELECT LOWER(‘AaBbCcDd‘) A FROM DUAL;
A
--------
aabbccdd
8、 LPAD(C1,N[,C2])
说明:在C1的左边填充C2,直到字符串的总长度达到N。C2的默认值为空格。如果C1的长度大于N,则返回C1左边的N个字符
举例:
SQL>SELECT LPAD(‘aabbcc‘,8) A,LPAD(‘aabbcc‘,4) B,LPAD(‘aabbcc‘,8,‘0‘) C FROM DUAL;
A B C
------------ --------
aabbcc aabb 00aabbcc
9、 LTRIM(C1[,C2])
说明:去掉C1左边所包含的C2中的任何字符,当遇到不是C2中的字符时结束,然后返回剩余的字符串。C2默认为空格
举例:
SQL>SELECT LTRIM(‘ aabb ‘) A,LTRIM(‘00aabb00‘,‘0‘) B FROM DUAL;
A B
------------
aabb aabb00
10、 NANVL(X,value)
说明:该函数只对BINARY_FLOAT和BINARY_DOUBLE起作用。如果X匹配NaN(即非数字),就返回value,否则返回X
举例(PL/SQL中无法执行,必须在SQLPLUS里执行):
SQL>CREATETABLE NANVL_demo(dec_numNUMBER(10,2), bin_doubleBINARY_DOUBLE, bin_floatBINARY_FLOAT);
表已创建。
SQL>INSERTINTO NANVL_demoVALUES(0,‘NaN‘,‘NaN‘);
已创建1行。
SQL>SELECT*FROM NANVL_demo;
DEC_NUM BIN_DOUBLE BIN_FLOAT
---------- ---------- ----------
0 Nan Nan
SQL>SELECT bin_float,NANVL(bin_float,0)FROM NANVL_demo;
BIN_FLOATNANVL(BIN_FLOAT,0)
---------- ------------------
Nan 0
11、 NVL(X,value)
说明:如果X为空,就返回value,否则返回X
举例:
SQL>SELECT NVL(‘‘,‘aabb‘) A,NVL(NULL,‘aabb‘) B,NVL(‘aa‘,‘aabb‘) C FROM DUAL;
A B C
-------- --
aabbaabb aa
12、 NVL2(X,value1,value2)
说明:如果X为空,就返回value1,否则返回value2
举例:
SQL>SELECT NVL2(‘‘,‘aabb‘,‘ccdd‘) A,NVL2(NULL,‘aabb‘,‘ccdd‘)B,NVL2(‘aa‘,‘aabb‘,‘ccdd‘) C FROM DUAL;
A B C
-------- ----
ccddccdd aabb
13、 REPLACE(C1,C2[,C3])
说明:把C1中出现的C2都置换成C3,然后返回剩余的字符串。C3默认为NULL。如果C3为NULL,那么所有出现C2的地方的字符都被删除;如果C2为NULL,则将返回C1;如果C1为NULL,则将返回NULL
举例:
SQL>SELECT REPLACE(‘aabbccaabb‘,‘aa‘,‘00‘) A,REPLACE(‘aabbccaabb‘,‘aa‘)B,REPLACE(‘aabbccaabb‘,NULL) C FROM DUAL;
A B C
---------------- ----------
00bbcc00bbbbccbb aabbccaabb
14、 RPAD(C1,N[,C2])
说明:在C1的右边填充C2,直到字符串的总长度到达N。C2的默认值为空格。N是返回的字节长度的字符串,如果这个数量比原字符串的字节长度要短,RPAD函数将会把字符串截取成从左到右的N个字符
举例:
SQL>SELECT RPAD(‘aabbcc‘,8) A,RPAD(‘aabbcc‘,4) B,RPAD(‘aabbcc‘,8,‘0‘) C FROM DUAL;
A B C
------------ --------
aabbcc aabb aabbcc00
15、 RTRIM(C1[,C2])
说明:去掉C1右边所包含的C2中的任何字符,当遇到不是C2中的字符时结束,然后返回剩余的字符串。C2默认为空格
举例:
SQL>SELECT RTRIM(‘ aabb ‘) A,RTRIM(‘00aabb00‘,‘0‘) B FROM DUAL;
A B
------------
aabb 00aabb
16、 SUBSTR(C,M[,N])
说明:返回C的子串,其中M是子串开始的位置,N是子串的长度。如果M为0,则从C的首字符开始:如果M是负数,则从C的结尾的指定位置开始
举例:
SQL>SELECT SUBSTR(‘aabbccdd‘,3) A,SUBSTR(‘aabbccdd‘,3,2) B,SUBSTR(‘aabbccdd‘,-3,2)C FROM DUAL;
A B C
-------- --
bbccddbb cd
17、 TRANSLATE(string,from_str,to_str)
说明:返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE是 REPLACE所提供的功能的一个超集。如果 from_str比 to_str长,那么在 from_str中而不在 to_str中的额外字符将从 string中被删除,因为它们没有相应的替换字符。to_str不能为空。Oracle将空字符串解释为 NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是 NULL。
举例:
SQL>select TRANSLATE(‘aabbcc‘,‘aabb‘,‘0011‘) A,TRANSLATE(‘abcbbaadef‘,‘ba‘,‘#@‘)B,TRANSLATE(‘22AABBCC22‘,‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ‘,‘0123456789‘) Cfrom dual;
A B C
---------------- ----
0011cc@#c##@@def 2222
18、 TRIM([C1] C2 FROM C3)
说明:其中,C1是保留宇,可以取如下字符串:LEADING、TRAILING和BOTH,C1必须和FROM一起使用。从C3字符串的C1处开始,删除C2字符,然后返回剩余的C3字符串。C1默认为BOTH。C2默认为空格。如果C1,C2,C3中有任何一个为NULL,则返回NULL
举例:
SQL>SELECT TRIM(‘ aabb ‘) A,TRIM(LEADING ‘0‘ FROM ‘00aabb00‘)B,TRIM(TRAILING ‘0‘ FROM ‘00aabb00‘) C,TRIM(BOTH ‘0‘ FROM ‘00aabb00‘) D FROMDUAL;
A B C D
---------- ------ ----
aabbaabb00 00aabb aabb
19、 UPPER(C)
说明:返回将C全部字符都大写之后的字符串
举例:
SQL>SELECT UPPER(‘aabbccdd‘) A FROM DUAL;
A
--------
AABBCCDD