您的位置:首页 > 数据库 > Oracle

oracle 字符处理函数

2018-03-05 10:59 302 查看

 a)      字符函数——返回字符值

        这些函数全都接收的是字符族类型的参数(CHR除外)并且返回字符值。除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值。字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的,比如: VARCHAR2数值被限制为2000字符(ORACLE 8中为4000字符),而CHAR数值被限制为255字符(在ORACLE8中是2000)。当在过程性语句中使用时,它们可以被赋值给VARCHAR2 或者CHAR类型的PL/SQL变量。
【使用位置】:过程性语句和SQL语句。

1.             CHR

【语法】:   chr(x)
【说明】:  将ASCII 码转换为字符
【功能】:   返回在数据库字符集中与X拥有等价数值的字符。CHR和ASCII是一对反函数。经过CHR转换后的字符再经过ASCII转换又得到了原来的字符
【互反函数】:  ASCII
【例子】:  select chr(15313816),ASCII('高') from dual;
【结果】:
chr(15313816)
ASCII('高')

15313816

2.              CONCAT

【语法】:   CONCAT(string1,string2)
【说明】:  连接两个字符串
【功能】:   返回string1,并且在后面连接string2。
【例子】:  select CONCAT('aa','bb')from dual;
【结果】:
CONCAT('aa','bb')
aabb

3.              INITCAP

【语法】:   INITCAP(string)
【说明】:  返回字符串并将字符串的第一个字母变为大写
【功能】:  返回字符串的每个单词的第一个字母大写而单词中的其他字母小写的string。单词是用空格或给字母数字字符进行分隔。不是字母的字符不变动。
【例子】:  select INITCAP('helloword!') from dual;
【结果】:
INITCAP('hello word!')
Hello Word!

4.              LTRIM

【语法】:  LTRIM(string1,string2)
【说明】:  删除左边出现的字符串
【功能】:   返回删除从左边算起出现在string2中的字符的string1。String2被缺省设置为单个的空格。数据库将扫描string1,从最左边开始。当遇到不在string2中的第一个字符,结果就被返回了。LTRIM的行为方式与RTRIM很相似。
【例子】:  select RTRIM('***aa***','*'),LTRIM('***aa***', '*') from dual;
【结果】:
RTRIM('***aa***', '*')
LTRIM('***aa***', '*')
***aa
aa***

5.              RTRIM

【语法】:   RTRIM(string1,[,string2])
【说明】:  在列的右边粘贴字符
【功能】:   返回删除从右边算起出现在string1中出现的字符string2. string2被缺省设置为单个的空格.数据库将扫描string1,从右边开始.当遇到不在string2中的第一个字符,结果就被返回了RTRIM的行为方式与LTRIM很相似.
【例子】:  select RTRIM('***aa***','*'),LTRIM('***aa***', '*') from dual;
【结果】:
RTRIM('***aa***', '*')
LTRIM('***aa***', '*')
***aa
aa***

6.              NLS_INITCAP

【语法】:   NLS_INITCAP(string[,nlsparams])
【说明】:  返回字符串并将字符串的第一个字母变为大写,其它字母小写;
【功能】:   返回字符串每个单词第一个字母大写而单词中的其他字母小写的string,nlsparams指定了不同于该会话缺省值的不同排序序列。如果不指定参数,则功能和INITCAP相同。Nlsparams可以使用的形式是:‘NLS_SORT=sort’这里sort制订了一个语言排序序列。
【例子】:  select nls_initcap('abcde'),nls_initcap('a c h d e','nls_sort= SCHINESE_PINYIN_M') from dual;
【结果】:
nls_initcap('ab cde')
nls_initcap('a c h d e','nls_sort= SCHINESE_PINYIN_M')
Ab Cde
A C H D E

7.              NLS_LOWER

【语法】:   NLS_LOWER(string[,nlsparams])
【功能】:   返回字符串中的所有字母都是小写形式的string。不是字母的字符不变。 Nlsparams参数的形式与用途和NLS_INITCAP中的nlsparams参数是相同的。如果nlsparams没有被包含,那么NLS_LOWER所作的处理和LOWER相同。
【例子】:  select NLS_LOWER('A B C')from dual;
【结果】:
NLS_LOWER('A B C')
a b c

8.              NLS_UPPER

【语法】:   nls_upper(string[,nlsparams])
【功能】:   返回字符串中的所有字母都是大写的形式的string。不是字母的字符不变。nlsparams参数的形式与用途和NLS_INITCAP中的相同。如果没有设定参数,则NLS_UPPER功能和UPPER相同。
【例子】:  select NLS_upper('a b c')from dual;
【结果】:
NLS_upper('a b c')
A B C

9.              REPLACE

【语法】:   REPLACE(string,search_str[,replace_str])
【说明】:  替换字符串
【功能】:   把string中的所有的子字符串search_str用可选的replace_str替换,如果没有指定replace_str,所有的string中的子字符串search_str都将被删除。REPLACE是TRANSLATE所提供的功能的一个子集。
【例子】:  select REPLACE('*a*b*c*','*',' '),REPLACE('*a*b*c*', '*') from dual;
【结果】:
REPLACE('*a*b*c*', '*',' ')
REPLACE('*a*b*c*', '*')
a b c
abc

10. LPAD

【语法】:   LPAD(string1,x[,string2])
【说明】:  在列的左边粘贴字符
【例子】:  select LPAD('abc',6,'*+-=)(*'),LPAD('abc', 6,'*'), LPAD('abc', 6) from dual;
【结果】:
LPAD('abc', 6,'*+-=)(*')
LPAD('abc', 6,'*')
LPAD('abc', 6)
*+-abc
***abc
   abc

11.        RPAD

【语法】:   RPAD(string1,x[,string2])
【说明】:  在列的右边粘贴字符
【功能】:   返回在X字符长度的位置上插入一个string2中的字符的string1。如果string2的长度要比X字符少,就按照需要进行复制。如果string2多于X字符,则仅string1前面的X各字符被使用。如果没有指定string2,那么使用空格进行填充。X是使用显示长度可以比字符串的实际长度要长。RPAD的行为方式与LPAD很相似,除了它是在右边而不是在左边进行填充。
【例子】:  select RPAD('abc',6,'*+-=)(*'),RPAD('abc', 6,'*'), RPAD('abc', 6) from dual;
【结果】:
RPAD('abc', 6,'*+-=)(*')
RPAD('abc', 6,'*')
RPAD('abc', 6)
abc*+-
abc***
abc  

12.        SOUNDEX

【语法】:   SOUNDEX(string)
【说明】:  返回一个与给定的字符串读音相同的字符串
【功能】:   返回string的声音表示形式.这对于比较两个拼写不同但是发音类似的单词而言很有帮助。
【例子】:  selectSOUNDEX('two'),SOUNDEX('too'),soundex('to') from dual;
【结果】:
SOUNDEX('two')
SOUNDEX('too')
SOUNDEX('to')
T000
T000
T000

13.        SUBSTR

【语法】:   SUBSTR(string,a[,b])
【说明】:   取子字符串,从a开始,取b个
【功能】:   返回从字母为值a开始b个字符长的string的一个子字符串.如果a是0,那么它就被认为从第一个字符开始.如果是正数,返回字符是从左边向右边进行计算的.如果b是负数,那么返回的字符是从string的末尾开始从右向左进行计算的.如果b不存在,那么它将缺省的设置为整个字符串.如果b小于1,那么将返回NULL.如果a或b使用了浮点数,那么该数值将在处理进行以前首先被却为一个整数.
【例子】:  select SUBSTR('abcdef',2,3)from dual;
【结果】:
SUBSTR('abcdef',2,3)
bcd

14.        TRANSLATE

【语法】:   TRANSLATE(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.
【例子】:  selectTRANSLATE('abcd','bd','*-'), TRANSLATE('abcd','bd','*'), TRANSLATE('abcd','db','')from dual;
【结果】:
TRANSLATE('abcd','bd','*-')
TRANSLATE('abcd','bd','*')
TRANSLATE('abcd','db','')
a*c-
a*c
 

15. LOWER

【语法】:   LOWER(string)
【说明】:  返回字符串,并将所有的字符小写
【功能】:   返回小写的string.不是字母的字符不变.如果string是CHAR数据类型的,那么结果也是CHAR类型的.如果string是VARCHAR2类型的,那么结果也是VARCHAR2类型的.
【例子】:  select LOWER ('AB23CD') from dual;
【结果】:
LOWER ('AB23CD')
ab23cd

16.        UPPER

【语法】:   UPPER(string)
【说明】:  返回字符串,并将所有的字符大写
【功能】:   返回大写的string.不是字母的字符不变.如果string是CHAR数据类型的,那么结果也是CHAR类型的.如果string是VARCHAR2类型的,那么结果也是VARCHAR2类型的.
【例子】:  select UPPER('ab23cd') from dual;
【结果】:
UPPER('ab23cd')
AB23CD

b)     字符函数——返回数字

        这些函数接受字符参数回数字结果.参数可以是CHAR或者是VARCHAR2类型的.尽管实际下许多结果都是整数值,但是返回结果都是简单的NUMBER类型的,没有定义任何的精度或刻度范围。

1.              ASCII

【语法】:   ASCII(string)
【说明】:  返回字符表达式最左端字符的ASCII 码值,如果最左端是汉字,只取汉字最左半边字符的ASCII 码
【功能】:   数据库字符集返回string的第一个字节的十进制表示.请注意该函数仍然称作为ASCII.尽管许多字符集不是7位ASCII.CHR和ASCII是互为相反的函数.CHR得到给定字符编码的响应字符. ASCII得到给定字符的字符编码
【互反函数】:   chr()
【例子】:  selectASCII('abc'),ASCII('a') from dual;
【结果】:
ASCII('abc')
ASCII('a')
97
97

2.              INSTR

【语法】:   INSTR(string1,string2[a,b])
【功能】:   得到在string1中包含string2的位置. string1时从左边开始检查的,开始的位置为a,如果a是一个负数,那么string1是从右边开始进行扫描的.第b次出现的位置将被返回. a和b都缺省设置为1,这将会返回在string1中第一次出现string2的位置.如果string2在a和b的规定下没有找到,那么返回0.位置的计算是相对于string1的开始位置的,不管a和b的取值是多少.
【例子】:  select INSTR('abc','b') fromdual;
【结果】:
INSTR('abc','b')
2

3.              INSTRB

【语法】:   INSTRB(string1,string2[a,[b]])
【功能】:   和INSTR相同,只是操作的对参数字符使用的位置的是字节
【例子】:  select INSTRB('张三','三'),INSTR('张三','三') from dual;
【结果】:
INSTRB('张三','三')
INSTR('张三','三')
4
2

4.              LENGTH

【语法】:   LENGTH(string)
【说明】:   返回字符串的长度
【功能】:   返回string的字节单位的长度.CHAR数值是填充空格类型的,如果string由数据类型CHAR,它的结尾的空格都被计算到字符串长度中间.如果string是NULL,返回结果是NULL,而不是0.
【例子】:  select LENGTH('张三') from dual;
【结果】:
LENGTH('张三')
2

5.              LENGTHB

【语法】:   LENGTHB(string)
【说明】:   返回的是字节长度
【功能】:   返回以字节为单位的string的长度.对于单字节字符集LENGTHB和LENGTH是一样的
【例子】:  select LENGTHB('张三') from dual;
【结果】:
LENGTHB('张三')
6

6.              NLSSORT

【语法】:   NLSSORT(string[,nlsparams])
【功能】:   得到用于排序string的字符串字节.所有的数值都被转换为字节字符串,这样在不同数据库之间就保持了一致性. Nlsparams的作用和NLS_INITCAP中的相同.如果忽略参数,会话使用缺省排序
【例子】:  SELECT name FROM test ORDERBY NLSSORT(name,'NLS_SORT = SCHINESE_PINYIN_M')
【结果】:
艾飞
安阿才
安然
巴莎
白冰
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 函数