Oracle函数——字符函数

ASCII(n)函数:返回字符串的ASCII码(当输入为字符串时返回第一个字符的ASCII码)

SELECT ASCII('abc') FROM dual;
结果:97
CHR(n)函数:返回对应ASCII码的字符(n必须为数字类型)
SELECT CHR(97) FROM dual;
结果:a

CONCAT(n,m)函数:连接n和m,n和m可以试字符,也可以是字符串。作用和“||”一样。
SELECT CONCAT('Hello','world') FROM dual;
结果:Helloworld

LENGTH(n)函数:返回字符或字符串的长度
SELECT LENGTH('Hello') FROM dual;
结果:5

VSIZE(value)函数:获得value的内部表示的字节数.如果value是NULL,结果是NULL.

select vsize('Hello')from dual;

结果:5

DUMP(expr[,return_fmt[,start_position][,length]])函数:用于返回表达式所对应的数据类型代码,长度,以及内部格式。当完全没有参数时,直接返回null。
expr:这个参数是要进行分析的表达式(数字或字符串等,可以是各个类型的值)
return_fmt:指返回参数的格式,有5种用法:
          1)8:以8进制返回结果的值
          2)10:以10进制返回结果的值(默认)
          3)16:以16进制返回结果的值
          4)17:以单字符的形式返回结果的值
          5)1000:以上4种加上1000,表示在返回值中加上当前字符集
start_position:开始进行返回的字符位置
length:需要返回的字符长度
select dump('Hello',1010) from dual;
结果:Typ=96 Len=5 CharacterSet=ZHS16GBK: 72,101,108,108,111

LTRIM(chr,TRIM_STR)函数:去掉字符串chr左边包含的TRIM_STR字符串中的任何字符,直到出现一个不包含在TRIM_STR中的字符为止。TRIM_STR可选,缺省截去空格
SELECT LTRIM('**a***Hello***%','*a') FROM dual;
结果:Hello***%

RTRIM(chr,TRIM_STR)函数:去掉字符串chr右边包含的TRIM_STR字符串中的任何字符,直到出现一个不包含在TRIM_STR中的字符为止
SELECT RTRIM('**a***Hello***%','%*') FROM dual;
结果:**a***Hello

TRIM([LEADING|TRAILING|BOTH][TRIM_STR  FROM]chr)函数:TRIM_STR可选,缺省截去空格;LEADING:指明仅仅将字符串的前缀字符删除,TRAILING:指明仅仅将字符串的尾随字符删除,默认为BOTH,删除两边字符。
SELECT TRIM(both'='FROM'=Hello=') FROM dual;
结果:Hello

LPAD(chr1,n,[char2])函数:在chr1左边填充字符chr2,使得字符总长度为n。chr2可选,默认为空格;当chr1字符串长度大于n时,则从左边截取chr1的n个字符显示。
SELECT LPAD('ab',5,'12') FROM dual; 
结果:121ab

RPAD(chr1,n,[char2])函数:在chr1右边填充字符chr2,使得字符总长度为n。chr2可选,默认为空格;当chr1字符串长度大于n时,则从左边截取chr1的n个字符显示。
SELECT RPAD('ab',5,'12') FROM dual; 
结果:ab121

INITCAP(n)函数:将字符串n中每个单词首字母大写。

SELECT INITCAP('abcde') FROM dual;

结果:Abcde

LOWER(n)函数:将n转为小写

SELECT LOWER('HELLO') FROM dual;

结果:hello

UPPER(n)函数:将n转为大写

SELECT UPPER('hello') FROM dual;

结果:HELLO

NLS_INITCAP(chr[,nlsparams])函数:将chr首字母大写。nlsparams指定了不同于该会话缺省值的不同排序序列。如果不指定参数,则功能和INITCAP相同。Nlsparams可以使用的形式是:‘NLS_SORT=sort’ 这里sort制订了一个语言排序序列。

nls_sort=SCHINESE_RADICAL_M(部首、笔画)
nls_sort=SCHINESE_STROKE_M(笔画、部首)
nls_sort=SCHINESE_PINYIN_M(拼音)
SELECT NLS_INITCAP('ab cd','nls_sort=SCHINESE_STROKE_M') FROM dual;

结果:Ab Cd

NLS_LOWER(string[,nlsparams])函数:返回字符串中的所有字母都是小写形式的string。不是字母的字符不变。Nlsparams参数的形式与用途和NLS_INITCAP中的nlsparams参数是相同的。如果nlsparams没有被包含,那么NLS_LOWER所作的处理和LOWER相同。
SELECT NLS_LOWER('AB CD','nls_sort=SCHINESE_STROKE_M') FROM dual;
结果:ab cd

NLS_UPPER(string[,nlsparams])函数:返回字符串中的所有字母都是大写的形式的string。不是字母的字符不变。nlsparams参数的形式与用途和NLS_INITCAP中的相同。如果没有设定参数,则NLS_UPPER功能和UPPER相同。

SELECT NLS_UPPER('ab cd','nls_sort=SCHINESE_STROKE_M') FROM dual;

结果:AB CD

NLSSORT(col[,nls_param])函数:根据nls_param指定的方式对col字段进行排序

select * from TEST order by NLSSORT(课程,'nls_sort=SCHINESE_PINYIN_M')

INSTR(string1,string2[,start_position[,nth_appearance]])函数:instr是一个非常好用的字符串处理函数,几乎所有的字符串分隔都用到此函数。返回要截取的字符串string2在源字符串string1中按正向排列得出的位置。start_position和nth_appearance可选,省略默认为1;start_position代表开始查找的起始位置,如果此参数为负,从尾部开始检索;nth_appearance代表字符串出现的次数。
SELECT INSTR('Hello world','o',6,1) FROM dual;

结果:8

SUBSTR(chr,start,length)函数:是从给定的字符表达式或备注字段中返回一个子字符串,start代表开始位置,截取length个字符,缺省length,默认到结尾
SELECT SUBSTR('ABCDE',2,3) FROM dual;
结果:BCD
REPLACE(chr,old,new)函数:在chr中查找old,并替换成new,当old为null时,返回chr;当new为null时,返回chr中截取掉old部分的字符串。
SELECT REPLACE('ABCDE','CD','123')FROM dual;

结果:AB123E

TRANSLATE(string,from_str,to_str)函数:将字符string按照from_str与to_str的对应规则进行处理,返回将所出现的from_str中的每个字符替换为to_str中的相应字符以后的string. TRANSLATE是REPLACE所提供的功能的一个超集.如果from_str比to_str长,那么在from_str中而不在to_str中而外的字符将从string中被删除,因为它们没有相应的替换字符. to_str不能为空.Oracle把空字符串认为是NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是NULL.

Select TRANSLATE('ABCDE','CD','123') from dual

结果:AB12E

SOUNDEX(string)函数:返回string的声音表示形式.这对于比较两个拼写不同但是发音类似的单词而言很有帮助,如果字符发音相同,则返回的结果会一致.

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');
 select xm from table1 where soundex(xm)=soundex('weather');
结果:weather
      wether

猜你喜欢

转载自blog.csdn.net/qq_33459369/article/details/80192921