ORACLE 字符串操作函数

来源:互联网 发布:新浪博客seo 编辑:程序博客网 时间:2024/05/17 06:09

1、TRIM([[LEADING||TRAILING||BOTH] c2 FROM] c1)。
    看起来很复杂,理解起来很简单:
  (1)如果没有指定任何参数则oracle去除c1头尾空格
  例如:SELECT TRIM('   WhaT is tHis   ') FROM DUAL;
  (2)如果指定了c2参数,则oracle去掉c1头尾c2(这个建议细致测试,有多种不同情形的哟)
  例如:SELECT TRIM('W' FROM 'WhaT is tHis w W') FROM DUAL;
  (3)如果指定了leading参数则会去掉c1头部c2
  例如:SELECT TRIM(leading 'W' FROM 'WhaT is tHis w W') FROM DUAL;
  (4)如果指定了trailing参数则会去掉c1尾部c2
  例如:SELECT TRIM(trailing 'W' FROM 'WhaT is tHis w W') FROM DUAL;
  (5)如果指定了both参数则会去掉c1头尾c2(跟不指定有区别吗?没区别!)
  例如:SELECT TRIM(both 'W' FROM 'WhaT is tHis w W') FROM DUAL;
  注意:c2长度=1
2、LTRIM(c1[,c2]) 千万表以为与上面那个长的像,功能也与上面的类似,本函数是从字符串c1左侧截取掉与指定字符串c2相同的字符并返回。如果c2     为空则默认截取空格。
  例如:SELECT LTRIM('WWhhhhhaT is tHis w W','Wh') FROM DUAL;
3、RTRIM(c1,c2)与上同,不过方向相反
    例如:SELECT RTRIM('WWhhhhhaT is tHis w W','W w') FROM DUAL;
以下是OCP教材中对该函数的描述
RTRIM(<c1>,<c2> ) takes two arguments, where c1 and c2 are character
strings. This function returns c1 without any trailing characters that appear
in c2. If no c2 characters are trailing characters in c1, then c1 is returned
unchanged. c2 defaults to a single space.
大家对Rtrim舍去字符串右边的空字符串是毫无疑议的
有疑问的应该是右边是字符串如何处理的。
如:
SELECT RTRIM('Mississippi','ip') test1,RTRIM('Rpadded ') test2 ,RTRIM('Mississippi','sip') test3 FROM dual;
结果为:
test1 test3 test3
Mississ Rpadded M
test1的实现
首先从字符串'Mississippi'右边查找'ip'中的任意字符,此例为'i','p',直到'Mississippi'右边不为'i'和'p'字符为止,所以结果应该是Mississ
test2的实现
去掉字符串的空格
test3的实现
实现方法同test1首先从字符串'Mississippi'右边查找'sip'中的任意字符,此例为's','i','p',直到'Mississippi'右边不为's'、'i'和'p'字符为止,所以结果应该是M
可以通过下例进一步了解Rtrim函数
SELECT RTRIM('Mississippi','Misp') test1,RTRIM('Mississippi','i') test2 FROM dual;
test1 test2
Mississipp

这些函数全都接收的是字符族类型的参数(CHR除外)并且返回字符值。
除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值。
字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的。
字符型变量存储的最大值:
VARCHAR2数值被限制为2000字符(ORACLE 8中为4000字符)
CHAR数值被限制为255字符(在ORACLE8中是2000)
long类型为2GB
Clob类型为4GB



1、CHR
语法:chr(x)
功能:返回在数据库字符集中与X拥有等价数值的字符。CHR和ASCII是一对反函数。经过CHR转换后的字符再经过ASCII转换又得到了原来的字符。
使用位置:过程性语句和SQL语句。
2、CONCAT
语法:CONCAT(string1,string2)
功能:返回string1,并且在后面连接string2。
使用位置:过程性语句和SQL语句。
3、INITCAP
语法:INITCAP(string)
功能:返回字符串的每个单词的第一个字母大写而单词中的其他字母小写的string。单词是用。空格或给字母数字字符进行分隔。不是字母的字符不变动。
使用位置:过程性语句和SQL语句。
4、LTRIM
语法:LTRIM(string1,string2)
功能:返回删除从左边算起出现在string2中的字符的string1。String2被缺省设置为单个的空格。数据库将扫描string1,从最左边开始。当遇到不在string2中的第一个字符,结果就被返回了。LTRIM的行为方式与RTRIM很相似。
使用位置:过程性语句和SQL语句。
5、NLS_INITCAP
语法:NLS_INITCAP(string[,nlsparams])
功能:返回字符串每个单词第一个字母大写而单词中的其他字母小写的string,nlsparams指定了不同于该会话缺省值的不同排序序列。如果不指定参数,则功能和INITCAP相同。Nlsparams可以使用的形式是:
‘NLS_SORT=sort’
这里sort制订了一个语言排序序列。
使用位置:过程性语句和SQL语句。
6、NLS_LOWER
语法:NLS_LOWER(string[,nlsparams])
功能:返回字符串中的所有字母都是小写形式的string。不是字母的字符不变。
Nlsparams参数的形式与用途和NLS_INITCAP中的nlsparams参数是相同的。如果nlsparams没有被包含,那么NLS_LOWER所作的处理和LOWER相同。
使用位置;过程性语句和SQL语句。
7、NLS_UPPER
语法:nls_upper(string[,nlsparams])
功能:返回字符串中的所有字母都是大写的形式的string。不是字母的字符不变。nlsparams参数的形式与用途和NLS_INITCAP中的相同。如果没有设定参数,则NLS_UPPER功能和UPPER相同。
使用位置:过程性语句和SQL语句。
8、REPLACE
语法:REPLACE(string,search_str[,replace_str])
功能:把string中的所有的子字符串search_str用可选的replace_str替换,如果没有指定replace_str,所有的string中的子字符串search_str都将被删除。REPLACE是TRANSLATE所提供的功能的一个子集。
使用位置:过程性语句和SQL语句。
9、RPAD
语法:RPAD(string1,x[,string2])
功能:返回在X字符长度的位置上插入一个string2中的字符的string1。如果string2的长度要比X字符少,就按照需要进行复制。如果string2多于X字符,则仅string1前面的X各字符被使用。如果没有指定string2,那么使用空格进行填充。X是使用显示长度可以比字符串的实际长度要长。RPAD的行为方式与LPAD很相似,除了它是在右边而不是在左边进行填充。
使用位置:过程性语句和SQL语句。
10、RTRIM
语法: RTRIM(string1,[,string2])
功能: 返回删除从右边算起出现在string1中出现的字符string2。string2被缺省设置为单个的空格。数据库将扫描string1,从右边开始。当遇到不在string2中的第一个字符,结果就被返回了RTRIM的行为方式与LTRIM很相似。
使用位置:过程性语句和SQL语句。
11、SOUNDEX
语法: SOUNDEX(string)
功能: 返回string的声音表示形式。这对于比较两个拼写不同但是发音类似的单词而言很有帮助。
使用位置:过程性语句和SQL语句。
12、SUBSTR
语法: SUBSTR(string,a[,b])
功能:返回从字母为值a开始b个字符长的string的一个子字符串。如果a是0,那么它就被认为从第一个字符开始。如果是正数,返回字符是从左边向右边进行计算的。如果b是负数,那么返回的字符是从string的末尾开始从右向左进行计算的。如果b不存在,那么它将缺省的设置为整个字符串。如果b小于1,那么将返回NULL。如果a或b使用了浮点数,那么该数值将在处理进行以前首先被却为一个整数。
使用位置:过程性语句和SQL语句。
13、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。
使用位置:过程性语句和SQL语句。
14、UPPER
语法: UPPER(string)
功能:返回大写的string。不是字母的字符不变。如果string是CHAR数据类型的,那么结果也是CHAR类型的。如果string是VARCHAR2类型的,那么结果也是VARCHAR2类型的。
使用位置: 过程性语句和SQL语句。
字符函数——返回数字
这些函数接受字符参数回数字结果。参数可以是CHAR或者是VARCHAR2类型的。尽管实际下许多结果都是整数值,但是返回结果都是简单的NUMBER类型的,没有定义任何的精度或刻度范围。
16、ASCII
语法: ASCII(string)
功能:数据库字符集返回string的第一个字节的十进制表示。请注意该函数仍然称作为ASCII。尽管许多字符集不是7位ASCII。CHR和ASCII是互为相反的函数。CHR得到给定字符编码的响应字符。ASCII得到给定字符的字符编码。
使用位置: 过程性语句和SQL语句。
17、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的取值是多少。
使用位置:过程性语句和SQL语句。
18、INSTRB
语法: INSTRB(string1, string2[a,[b]])
功能: 和INSTR相同,只是操作的对参数字符使用的位置的是字节。
使用位置: 过程性语句和SQL语句。
19、LENGTH
语法: LENGTH(string)
功能:返回string的字节单位的长度。CHAR数值是填充空格类型的,如果string由数据类型CHAR,它的结尾的空格都被计算到字符串长度中间。
如果string是NULL,返回结果是NULL,而不是0。
使用位置: 过程性语句和SQL语句。
20、LENGTHB
语法: LENGTHB(string)
功能: 返回以字节为单位的string的长度。对于单字节字符集LENGTHB和LENGTH是一样的。
使用位置: 过程性语句和SQL语句。
21、NLSSORT
语法: NLSSORT(string[,nlsparams])
功能: 得到用于排序string的字符串字节。所有的数值都被转换为字节字符串,这样在不同数据库之间就保持了一致性。Nlsparams的作用和
NLS_INITCAP中的相同。如果忽略参数,会话使用缺省排序。
使用位置: 过程性语句和SQL语句。
select substr(t。cm_node,0,instr(t。cm_node,'/',-1)) from cm_nodet。

原创粉丝点击