oracle 常用sql字符函数介绍

时间:2021-02-10 03:53:18

常用字符函数介绍

1、ascii

返回与指定的字符对应的十进制数;

SQL>select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

A          A       ZERO      SPACE

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

65         97         48         32

2、chr

给出整数,返回对应的字符;

SQL>select chr(54740) zhao,chr(65) chr65 from dual;

ZHAO CHR65

---- -----

赵   A

3、concat

连接两个字符串;

SQL>select concat('010-','88888888')||'转23' 高乾竞电话 from dual;

高乾竞电话

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

010-88888888转23

特别说明:concat(字串1或字段1,字串2或字段2)也可以书写成 字串1或字段1 || 字串2或字段2

4、initcap

返回字符串并将字符串的第一个字母变成大写;

SQL>select initcap('smith') upp from dual;

UPP

-----

Smith

5、instr(C1,C2,I,J)

在一个字符串中搜索指定的字符,返回发现指定的字符的位置;

C1  被搜索的字符串;

C2  希望搜索的字符串;

I   搜索的开始位置,默认为1;

J   出现的位置,默认为1;

SQL>select instr('oracle traning','ra',1,2) instring from dual;

INSTRING

----------

9

6、length

返回字符串的长度;

SQL>select ename,length(ename),job,length(job),sal,length(to_char(sal)) from emp where ename='SMITH';

ENAME      LENGTH(ENAME) JOB       LENGTH(JOB)       SAL LENGTH(TO_CHAR(SAL))

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

SMITH                  5 CLERK               5    800.00                    3

特别说明:在oracle中单个汉字、字母、还是特殊符号都认为是长度为1

7、lower

返回字符串,并将所有的字符小写;

SQL>select lower('AaBbCcDd') "lower-AaBbCcDd" from dual;

lower-AaBbCcDd

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

aabbccdd

8、upper

返回字符串,并将所有的字符大写;

SQL>select upper('AaBbCcDd') "upper-AaBbCcDd" from dual;

upper-AaBbCcDd

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

AABBCCDD

练习:请把雇员的名字,首字母小写,其它大写。

SQL>select substr(lower(ename),1,1)||substr(upper(ename),2,length(ename)) "eNAME"from emp where ename='SMITH';

SQL>select concat(substr(lower(ename),1,1),substr(upper(ename),2,length(ename))) "eNAME"from emp where ename='SMITH';

eNAME

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

sMITH

特别说明:函数是可以相互嵌套,复合使用的。

9、rpad和lpad(粘贴字符)

rpad在列的右边粘贴字符 rpad('显示内容'或字段,显示长度,'填充占位符')

lpad在列的左边粘贴字符 lpad('显示内容'或字段,显示长度,'填充占位符')

SQL>select lpad(rpad('gao',10,'*'),17,'*') from dual;

LPAD(RPAD('GAO',10,'*'),17,'*'

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

*******gao*******

10、ltrim和rtrim

ltrim   删除左边出现的字符串 ltrim('原内容'或字段,'要删除的字符串')

rtrim   删除右边出现的字符串 rtrim('原内容'或字段,'要删除的字符串')

SQL>select ltrim(rtrim('    gao qian jing    ',' '),' ') from dual;

LTRIM(RTRIM('GAOQIANJING',''),

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

gao qian jing

SQL>select rtrim('**gao qian jing**','*') from dual;

RTRIM('**GAOQIANJING**','*')

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

**gao qian jing

SQL>select ltrim('**gao qian jing**','*') from dual;

LTRIM('**GAOQIANJING**','*')

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

gao qian jing**

11、substr(string,start,count)

取子字符串,从start开始,取count个

SQL>select substr('13088888888',3,8) from dual;

SUBSTR('13088888888',3,8)

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

08888888

12、replace('string','s1','s2')

string 希望被替换的字符或变量

s1  被替换的字符串

s2  要替换的字符串

SQL>select replace('he love you','he','i') from dual;

REPLACE('HELOVEYOU','HE','I')

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

i love you

13、soundex

返回一个与给定的字符串读音相同的字符串;

SQL>create table table1(xm varchar(8));

SQL>insert into table1 values('weather');

SQL>insert into table1 values('wether');

SQL>insert into table1 values('gao');

SQL>select xm from table1 where soundex(xm)=soundex('weather');

XM

--------

weather

wether

特别说明:soundex找出读音相同的字符串,但无法找出汉字的读音,只能找出英文和拼音的读音。

14、trim('s' from 'string')

leading     剪掉前面的字符

trailing    剪掉后面的字符

如果不指定,默认为空格符。

SQL>select trim(0 from 0009872348900) "trim example" from dual;

trim example

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

98723489