常用字符函数介绍
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