字符型简介
固定长度字符串-char(n)
n代表字符串的长度,当实际长度不足时,利用空格在右端补齐,n的最大值不能大于2000。所以只要是固定长度的字符串,他的length(值)的长度总为n
varchar(n)
可变长度字符串,当实际长度不足时,不使用空格进行补充,同样长度也不许超出n。当作为列的数据类型时,最大长度不能大于4000
varchar2(n)
可变长度字符串,尽量使用varchar2(n)而非varchar(n),因为使用varchar2(n)可以获得Oracle向后兼容性的保证。当作为列的数据类型时,最大长度不能大于4000
varchar2(n)和char(n)的选择
char(n):占用空间大。但效率高。以空间换时间
varchar2(n):占用空间小,在不断调整长度时,会损耗效率
变量声明中的字符串类型
char(n),varchar(n),varchar2(n),都可用于声明变量。但是三者声明时,最大长度均为32767
declare s char(32767)
字符型处理
向左补全字符串-lpad()
lpad()用于向左补全字符串,格式化字符串。将字符串格式化为指定长度,有不足部分,则在左端填充特定字符,语法如下:
lpad(string,padded_length,[pad_string])
select lpad('1',4,'0') empplyee_no from dual
结果0001
如果原字符串长度已超过预期长度,也将从字符串左端进行截取
select lpad('12345',4,'0') empplyee_no from dual
结果1234
向右补全字符串-rpad()
select lpad('1',4,'*') empplyee_no from dual
结果1***
注意:当原始字符串长度大于预期长度时,rpad()同样是自左端截取字符串
select lpad('12345',4,'*') empplyee_no from dual
结果1234
返回字符串小写形式-lower()
返回字符串大写形式-upper()
单词首字符大写-initcap()
select initcap('like') new_word from dual
结果:Like
select initcap('LIKE') new_word from dual
结果:Like
无论使用全小写形式,还是全大写形式,都将返回首字符大写,其余字符小写的形式
initcap()是以单词为单位,而非整个字符串
select initcap('we all like bike') new_string from dual
结果:We All Like Bike
注意:只要是非单词字符都将作为单词的分隔符,
select initcap('we-all-like-bike') new_string from dual
结果:We-All-Like-Bike
返回字符串长度-length()
length()的参数不仅可以为字符串,还可以是其他类型
select length(123.45) len from dual
结果:6
length(’’),Oracle中将空字符串一律视为null,将null作为参数的函数都返回null
截取字符串-substr()
substr(string,start_index,length)
string指定原始字符串,start_index指定开始截取的位置,第三个参数指定截取的长度。
注意:Oracle中字符串的第一个字符的位置是1
select substr('123456789',2,3) sub_string from dual
结果:234
当没有指定第三个参数时,将从开始位置一直截取到末尾
获得字符串出现的位置-instr()
instr()用于返回子字符串在父字符串中出现的位置,如果为出现,返回0
select instr('132456789','56') position from dual
结果:5
select instr('132456789','56',7) position from dual
表示从‘123456789’的第7个字符开始搜索,结果为0
select instr('132456789','56',1,2) position from dual
第4个参数指定第几次获得子字符串才是真正要搜寻的结果。结果为0
删除字符串左侧空格-ltrim()
删除字符串右侧空格-rtrim()
删除字符串两侧空格-trim()
串联字符串-concat()
concat()只有2个参数,若要对多个字符串进行连接,则需要多个concat()嵌套
select concat(concat('hellow',hellow),world) nbew_str from dual
结果:hellow hellow world
翻译字符串-translate()
select translate('+-*','1+23-4*','abcdefghijklmnopqrstuvwxyz') trans from dual
翻译第一个字符串‘±’。过程:在第二个字符串寻找+,得到位置2,然后在第3个字符串中获得位置为2的字符b,接着翻译-和。最终结果:beg
反转字符串-reverse()
select reverse('abcdefgh') from dual
结果:hgfedcba
如果反转双字节字符,例如汉字,将返回乱码
本文来自博客园,作者:NE_STOP,转载请注明原文链接:https://www.cnblogs.com/alineverstop/p/18004696