首页 > 代码库 > 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)

说明:返回十进制ASCIIN对应的字符

举例:

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后面而形成的字符串。如果C1NULL,那么返回C2;如果C2NULL,那么返回C1;如果C1C2都为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开始搜索C2M次出现的位置,并返回该位置数字。如果N是负数,则搜索从右向左进行,但位置数字仍然从左向右计算。NM默认都是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,直到字符串的总长度达到NC2的默认值为空格。如果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_FLOATBINARY_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。如果C3NULL,那么所有出现C2的地方的字符都被删除;如果C2NULL,则将返回C1;如果C1NULL,则将返回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,直到字符串的总长度到达NC2的默认值为空格。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是子串的长度。如果M0,则从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中的相应字符以后的stringTRANSLATE 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是保留宇,可以取如下字符串:LEADINGTRAILINGBOTHC1必须和FROM一起使用。从C3字符串的C1处开始,删除C2字符,然后返回剩余的C3字符串。C1默认为BOTHC2默认为空格。如果C1C2C3中有任何一个为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