第六章 Oracle 中的字符型及处理方法
字符型简介
-
char(n)
- char(n)指定变量或列的数据类型为固定长度为n的字符串。
- 当实际字符串的长度不足n时,Oracle 利用空格将右端补齐。当然,实际字符串的长度也不能大于n
- 数据库中,当列指定为char(n)类型时,n的最大值不能大于2000,否则,Oracle将抛出错误。
-
varchar(n)
- varchar(n)指定的数据类型是一个长度为n的可变字符串类型。
- 当实际字符串的长度不足n时,不会使用空格进行填充。同样,实际字符串的长度也不能超出n。
- varchar(n)当作为列的数据类型时,varchar的最大长度不能大于4000
-
varchar2(n)
-
varchar2(n)与varchar(n)同样是可变长度的字符串类型
-
varchar2(n)与varchar(n)的区别:
- 对于它俩的区别,没有必要深究,总之varchar2(n)是Oracle数据库独有的数据类型,如果数据仅使用oracle存储,建议使用varchar2(n),但数据可能会转移到其他数据库(如mysql)时,建议使用varchar(n)数据类型
-
当作为列的数据类型出现时,varchar2的长度同样不能大于4000
-
-
以上三种字符串类型,都可用于声明变量,但是利用三者声明时,最大长度均为32767
- 其中,char(n)并不适用于声明变量,因为无论变量值为多少,其长度不变,仍然为32767,造成内存空间的浪费。
字符串函数
-
lpad():向左补全字符串
-
该函数主要用于字符串的格式化。格式化的方式为,将字符串格式化为指定长度,如有不足的部分,则在字符串的左端填充特定字符。
-
lpad(string,padded_length,[pad_string])
- string:表示原始字符串
- padded_length:表示指定格式化之后字符串长度
- pad_string:指定填充字符
- 如果原字符串的长度大于指定格式化之后字符串的长度,将从字符串左端开始截取。
-
例:
-
-
-
rpad():向右补全字符串
-
rpad(string,padded_length,[pad_string])
- 与lpad()函数相似,rpad()函数返回字符串格式化为特定位数的操作。只是该函数是从右端补齐位数。
- 如果原始字符串的长度大于预期长度时,rlpad()函数同样是自左端截取字符串。
-
-
lower():返回字符串的小写形式
-
lower(string)举例:
-
-
upper():返回字符串的大写形式
-
upper(string)举例:
-
-
initcap():单词首字符大写
-
initcap(string)举例:
-
注意:
- 如果有多个单词组成,只要非单词字符都将作为单词的分隔符
-
-
-
-
length():返回字符串的长度
-
length(string)举例
-
-
substr():截取字符串
-
substr(string,start_index,length)
- string:原始字符串
- start_index:开始截取的位置
- length:指定截取的长度
- 注意:Oracle中字符串中第一个字符的位置为1,与编程语言Java自0开始的习惯不同
-
-
instr():返回子字符串在父字符串中出现的位置
-
instr(string,sub_string[,start_index][,times])
- string:为父字符串;
- sub_string:为子字符串;
- start_index:可选参数,指定搜寻的起始位置
- times:可选参数,表示第几次获得子字符串
- 注意:如果子字符串未出现在父字符串中,该函数将返回0
-
举例:
-
-
ltrim():删除字符串左侧的空格
-
ltrim(string)
-
-
rtrim():删除字符串右侧的空格
-
rtrim(string)
-
-
trim():删除字符串两侧空格
-
trim(string)
-
-
concat():将两个字符串进行连接
-
concat(string1,string2)
-
多个字符串进行连接时,使用多个concat()函数嵌套
-
-
translate():翻译字符串
-
translate(string1,string2,string3)
-
string1:原始字符串
-
string2:通过此字符串,获取位置
-
string3:通过获取到的位置,找到位置对应的字符
-
如果string3的长度小于string2中获取到的位置参数,则作为空字符串‘’处理
-
-
举例:
-
-
±:在 1+2- 中对应的位置为2 4 5;在abcugfk中找到位置为2 4 5的字符,得到结果字符:bug
-
-
-
reverse():反转字符串
- reverse(string)
-
反转单字节字符串:
-
-
reverse(string),在对单字节字符进行转换时,可将字符串的顺序颠倒;
-
-
反转双字节字符串:
-
-
当转换像汉字这种双字节字符时,返回乱码
-
-
- reverse(string)