oracle常用函数二:字符函数
1,concat(str1,str2) 连接字符串str1和字符串str2,返回连接后的字符串,相当于‘||’
SQL> select concat('god ','bless u'),'god '||'bless u' from dual;
CONCAT('GOD','BLESSU') 'GOD'||'BLESSU'
---------------------- ----------------------
god bless u god bless u
2,initcap(str1) 将str1字符串中每个单词的第一个字母变为大写,其余的变为小写
SQL> select initcap('gOD bleSS u') from dual;
INITCAP('GODBLESSU')
----------------------
God Bless U
3,instr(str1,str2[,m[,n]] 从str1字符串中查找str2字符串的出现位置
m:从str1字符串的那个字符开始查找,默认为1,如果为负数,则从str1右数第|m|个字符开始查找(正负只影响查找开始位置,无论正负都是从左向右查找)
n:str2字符串出现次数,默认为第1次出现
SQL> select instr('ab34567ab','ab') from dual;
INSTR('AB34567AB','AB')
-----------------------
1
SQL> select instr('ab34567ab','ab',7) from dual;
INSTR('AB34567AB','AB',7)
-------------------------
8
SQL> select instr('ab34567ab','ab',1,2) from dual;
INSTR('AB34567AB','AB',1,2)
---------------------------
8
SQL> select instr('1234567ab','ab',-3) from dual;
INSTR('1234567AB','AB',-3)
--------------------------
0
SQL> select instr('1234567ab','ab',-2) from dual;
INSTR('1234567AB','AB',-2)
--------------------------
8
4,instrb(str1,str2[,m[,n]]) 和instr函数相同,只不过返回的为字节位置,只有在使用多字节字符集时返回结果才会与instr不同
5,substr(str,m[,n]) 根据m和n截取str字符串并将截取的字符串返回
m:从哪个字符开始,负数即为从右往左第|m|个字符开始,n:截取的字符个数,默认为从第m个字符开始至字符串末尾
SQL> select substr('abcdef',2) from dual;
SUBSTR('AB
----------
bcdef
SQL> select substr('abcdef',-2) from dual;
SUBS
----
ef
SQL> select substr('abcdef',2,3) from dual;
SUBSTR
------
bcd
6,substrb(str,m[,n]) 同substr函数,只不过m和n都是指字节而不是字符,只有在使用多字节字符集时返回结果才会与substr不同
7,length(str) 返回str字符串的字符长度
SQL> select length('人民') from dual;
LENGTH('人民')
--------------
2
8,lengthb(str) 与length函数相同,只顾返回的为字符串的字节长度,只有在使用多字节字符集时返回结果才会与length不同
SQL> select lengthb('人民') from dual;
LENGTHB('人民')
---------------
6
9,lower(str) 将字符串所有字符转为小写
SQL> select lower('AAss') from dual;
LOWER('A
--------
aass
SQL> select lower('人民') from dual;
LOWER('人民'
------------
人民
10,upper(str) 同lower,只不过是将字符串的所有字符转为大写
11,lpad(str1,n[,str2]) 使用空格(如果str2存在,则使用str2)在str1字符串左侧填充,直到str1的长度达到n
SQL> select lpad('aa',5) from dual;
LPAD('AA',
----------
aa
SQL> select lpad('aa',5,'ss') from dual;
LPAD('AA',
----------
sssaa
12,rpad(str1,n[,str2]) 同lpad函数,只不过rpad是从右侧填充
13,ltrim(str1[,str2]) 从字符串str1左边删除指定字符,默认为空格,如果str2存在,则从str1左边删除str2中存在的字符,遇到str2中不存在的字符删除结束
SQL> select ltrim('!@awcd','w@!') from dual;
LTRIM('!
--------
awcd
14,rtrim(str1[,str2]) 同ltrim,只不过是rtrim是从右侧删除
15,trim([ leading | trailing | both ][ trim_char from ] str1) 删除掉字符串前后的空格(默认),或其他字符
leding:左边,trailing:右边,both:2边
SQL> select trim(leading '$' from '$12345$') from dual; TRIM(LEADING ------------ 12345$
16,replace(str1,str2[,str3]) 在str1中搜索str2字符串,如果str3存在,则使用str3替代str2,否则删除str2
SQL> select replace('abcdefg','abc') from dual;
REPLACE(
--------
defg
SQL> select replace('abcdefg','abc','cba') from dual;
REPLACE('ABCDE
--------------
cbadefg
浙公网安备 33010602011771号