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