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


 

posted @ 2012-11-08 16:03  心意合一  阅读(203)  评论(0编辑  收藏  举报