存储过程对字符串的处理
字符函数——返回字符值
这些函数全都接收的是字符族类型的参数(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 相同。N
lsparams 可以使用的形式是:
‘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。不是字母的字符不变。nlspara
ms 参数的形式与用途和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,那么结果也是N
ULL.
使用位置:过程性语句和SQL 语句。
14、UPPER
语法: UPPER(string)
功能: 返回大写的string.不是字母的字符不变.如果string 是CHAR 数据类型的,那么结果
也是CHAR 类型的.如果string 是VARCHAR2 类型的,那么
结果也是VARCHAR2 类型的.
使用位置: 过程性语句和SQL 语句。
字符函数——返回数字
这些函数接受字符参数回数字结果.参数可以是CHAR 或者是VARCHAR2 类型的.尽管实际下许
多结果都是整数值,但是返回结果都是简单的NUMBER
类型的,没有定义任何的精度或刻度范围.
16、ASCII
语法: ASCII(string)
功能: 数据库字符集返回string 的第一个字节的十进制表示.请注意该函数仍然称作为ASC
II.尽管许多字符集不是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 语句。