字符型简介

固定长度字符串-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

如果反转双字节字符,例如汉字,将返回乱码

posted on 2018-02-03 16:08  NE_STOP  阅读(12)  评论(0编辑  收藏  举报  来源