oracle--常用函数3--字符函数

来源:互联网 发布:网络电视打开无信号 编辑:程序博客网 时间:2024/05/18 02:52

1.ASCII(x1)---最左端字符的ASCII 码值

【说明】在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。
  如果最左端是汉字,只取汉字最左半边字符的ASCII 码

select ascii('A') A,ascii('a') a,ascii(' ') space,ascii('示') hz from dual;


2.CHR(n1)---将ASCII 码转换为字符
n1,为整数,返回字符
select chr(54740) zhao,chr(65) chr65 from dual;


3.CONCAT(c1,c2)---连接2个字符串,作用同c1||c2
select concat('010-','88888888')||'转23' 高乾竞电话 from dual;


4.INITCAP(c1)---将字符串的第一个字母变为大写,其它字母小写
select initcap('smith abc aBC') upp from dual;
结果:Smith Abc Abc


5.LOWER(c1)--全部转为小写
select lower('AaBbCcDd')AaBbCcDd from dual;


6.UPPER(c1)--全部转为大写
select upper('AaBbCcDd') upper from dual;


7.NLS_INITCAP(x[,y])----返回字符串并将字符串的第一个字母变为大写,其它字母小写
x是字符串,
y是可选参数,可以是
select nls_initcap('ab cde') "test",nls_initcap('a c b d e','nls_sort= SCHINESE_PINYIN_M') "test1" from dual;
不是太明白这个函数的作用


8.NLS_LOWER(x[,y])--返回字符串并将字符串变为小写


9.NLS_UPPER(x[,y])--返回字符串并将字符串的转换为大写;


10.INSTR(C1,C2[,I[,J]])---在一个字符串中搜索指定的字符,返回发现指定的字符的位置
C1    被搜索的字符串
C2    希望搜索的字符串
I     搜索的开始位置,默认为1
J     第J次出现的位置,默认为1
多字节符(汉字、全角符等),按1个字符计算
select instr('oracle traning','ra',1,2) instring from dual;


11.INSTRB(C1,C2[,I[,J]])----和上一个函数用法相同,但是多字节符(汉字、全角符等),按2个字符计算。
select instr('重庆某软件公司','某',1,1),instrb('重庆某软件公司','某',1,1) instring from dual;


12.LENGTH(c1)---返回字符串长度
多字节符(汉字、全角符等),按1个字符计算
select length('高乾竞'),length('北京市海锭区'),length('北京TO_CHAR') from dual;


13.LENGTHB(c1)--多字节符(汉字、全角符等),按2个字符计算
select length('高乾竞'),lengthB('高乾竞') from dual


14.LENGTHC(c1).LENGTH2(c1).LENGTH4(c1)
Length函数返回字符的个数,使用定义是给定的字符集来计算字符的个数
LENGTHB给出该字符串的byte
LENGTHC使用纯Unicode
LENGTH2使用UCS2
LENGTH4使用UCS4
Select length('你好'),lengthB('你好'),lengthC('你好'),length2('你好'), length4('你好')  from dual; 


15.LPAD(c1,n[,c2])--在字符串c1的左边用字符串c2填充,直到长度为n时为止
n 追加后字符总长度
c2 追加字符串,默认为空格
如果c1长度大于n,则返回c1左边n个字符
如果如果c1长度小于n,c2和c1连接后大于n,则返回连接后的右边n个字符
select lpad('gao',10,'*') from dual;


16.RPAD(c1,n[,c2])--在字符串c1的右边用字符串c2填充,直到长度为n时为止
n 追加后字符总长度
c2 追加字符串,默认为空格
如果c1长度大于n,则返回c1左边n个字符
如果如果c1长度小于n,c1和c2连接后大于n,则返回连接后的左边n个字符
如果如果c1长度小于n,c1和c2连接后小于n,则返回c1与多个重复c2连接(总长度>=n)后的左边n个字符
select rpad('gao',10,'*a') from dual;


17.LTRIM(c1,[,c2])--删除左边出现的字符串
C1 字符串
c2 追加字符串,默认为空格
select LTRIM('   gao qian jing',' ') text from dual;
如果不加c2,就是默认去掉字符串左侧的空格
c2就是定义去掉左侧开头的任意字符


18.RTRIM(c1,[,c2])---删除右边的字符串
功能和上面类似,只是方向变成了右侧
select RTRIM('gao qian jingXXXX','X') text from dual;


19.REPLACE(c1,c2[,c3])---替换
c1--原始字符串
c2--想从原始字符中查找并换掉的字符
c3--用来换掉原始字符的字符,如果不写,默认是空,即从原始字符中直接删掉查找字符
select replace('he love you','he','i') test from dual;


20.SOUNDEX(c1)---返回英文的发音的代码,用于比较2个单词发音是否近似
算法,看看了解就行了
计算语音的算法: 
  1.保留字符串首字母,但删除a、e、h、i、o、w、y 
  2.将下表中的数字赋给相对应的字母 
  (1) 1:b、f、p、v 
  (2) 2:c、g、k、q、s、x、z 
  (3) 3:d、t 
  (4) 4:l 
  (5) 5:m、n 
  (6) 6:r 
  3. 如果字符串中存在拥有相同数字的2个以上(包含2个)的字母在一起(例如b和f),或者只有h或w,则删除其他的,只保留1个 
  4.只返回前4个字节,不够用0填充 
  示例: 
  soundex('two'),soundex('too'),soundex('to'),他们的结果都是T000 
  soundex('cap'),soundex('cup'),他们的结果都是C100 
  soundex('house'),soundex('horse'),他们的结果都分别是H200,H620


21.SUBSTR(c1,n1[,n2])--字符串截取
多字节符(汉字、全角符等),按1个字符计算
c1--目标的原字符串
n1--从原字符串中第n1位开始截取
n2--从原字符串中取n2个字符,如果不设定,则取到最后一个字符
select substr('13087654321',3,8) test from dual;


22.SUBSTRB(c1,n1[,n2])---多字节符(汉字、全角符等),按2个字符计算
功能和参数和上面一样
select substr('我手机13012345678',4,11),substrb('我手机13012345678',4,11),substrb('我手机13012345678',3,11) test from dual;
返回:13012345678, 机13012345,手机1301234


23.TRANSLATE(c1,c2,c3)---将指定字符替换为新字符
c1   希望被替换的字符或变量 
c2   查询原始的字符集
c3   替换新的字符集,将c2对应顺序字符,替换为c3对应顺序字符
如果c3长度大于c2,则c3长出后面的字符无效
如果c3长度小于c2,则c2长出后面的字符均替换为空(删除)
如果c3长度为0,则返回空字符串。
如果c2里字符重复,按首次位置为替换依据
select TRANSLATE('he love you','he','i'),
TRANSLATE('重庆的人','重庆的','上海男'),
TRANSLATE('重庆的人','重庆的重庆','北京男士们'),
TRANSLATE('重庆的人','重庆的重庆','1北京男士们'),
TRANSLATE('重庆的人','1重庆的重庆','北京男士们') from dual;


24.TRIM(c1 from c2)--删除左边和右边的空字符串
c1 删除字符串,默认为空格
C2 删除前字符串
select TRIM('X' from 'XXXgao qian jingXXXX'),TRIM('X' from 'XXXgaoXXjingXXXX') text from dual;




























原创粉丝点击