1)字符串类型:
char:定长字符串类型,最大长度为2000个字节。不指定长度时,默认为1个字节。
varchar2():可变字符串长度,最大长度为4000个字节,必须指定字符串长度。
long:varchar2的加长版,最大长度为2G的字节。
但是在一个表中,只能存在一个long类型的字段。
此字段还不能作为主键和索引。
clob:可以替代long类型,最大长度为4G的字节
没有long类型的限制
默认单位:字节。
如:char(10),表示占用内存10个字节,相当于char(10bytes)
也可以指定为字符char,如:char(10 char),表示占用内存10个字符,
占用字节数与字符集有关。
2)字符串函数:
1.拼接函数:concat(p1,p2)
将字符串p1和p2进行无缝连接,可以嵌套
可以使用||来代替拼接函数
--将字符串“hello”和“kitty”进行拼接
select concat('hello','kitty') from dual;
select 'hello'||'kitty' from dual;
2.统计长度函数:length(p1);
统计参数p1的字符个数
--统计hellokitty的字符个数
select length('hellokitty') from dual;
--统计'你好,世界'的字符个数
select length('你好,世界') from dual;
3.补位函数
左补位函数:lpad(p1,n,p2)
表示使用p2在p1左边进行补位,总长度为n(n的单位:字节)(相当于右对齐)
右补位函数:rpad(p1,n,p2)
表示使用p2在p1右边进行补位,总长度为n(相当于左对齐)
--使用'#'在'hello'左边进行补位,使整个字符串达到20字节长度
select lpad('hello',20,'#') from dual;
--使用'#'在'hello'右边进行补位,使整个字符串达到20字节长度
select rpad('hello',20,'#') from dual;
4.大小写函数
lower(p1):将p1中的字符都变成小写
upper(p1):将p1中的字符都变成大写
initcap(p1):将p1中的单词首字母大写,其余小写(空格隔开算一个字符)
--使用lower函数显示'no zuo no die'
select lower('no zuo no die') from dual;
--使用upper函数显示'no zuo no die'
select upper('no zuo no die') from dual;
--使用initcap()显示'no zuo no die'
select initcap('no zuo no die') from dual;
5.截去函数
trim(p2 from p1):从p1的前后截去p2,p2必须是一个字符
ltrim(p1,p2):从p1的左边截去含有p2中任意字符的字符
rtrim(p1,p2):从p1的右边截去含有p2中任意字符的字符
--截去'上海自来水来自海上'中的'上'
select trim('海' from '上海自来水来自海上') from dual;
--截去'上海自来水来自海上'左边的'海上来自'
select ltrim('上海自来水来自海上','海上来自') from dual;
--截去'上海自来水来自海上'右边的'海自上来水'
select rtrim('上海自来水来自海上','海上水来自') from dual;
6.截取子串函数substr(p1,start,len)
对p1进行截取,从start位置开始往后截取。
len参数可以省略,没有第三个参数时,截取到 最后;有第三个参数时,都表示从头截取。
start为0或者1时,都表示从头截取;start为负数时,表示从后往前数第start个。
--截取'no zuo no die'中的'zuo no'
select substr('no zuo no die',4,6) from dual;
--从倒数第五个位置开始截取'no zuo no die'
select substr('no zuo no die',-5) from dual;
7.查找索引函数:instr(p1,p2,m,n)
返回p2在p1的什么位置,查找不到返回0
m:可以省略,表示从p1的那个位置开始
n:表示p2的第几次出现
不写m,n时,表示从头开始检索,第一次出现的位置
写m,不写n时,表示从头开始检索,第一次出现的位置
--查找'no zuo no die'中'no'第一次出现的位置
select instr('no zuo no die','no') from dual;
--结果为:1
--查找'no zuo no die'中'no'第二次出现的位置
select instr('no zuo no die','no',1,2) from dual;
--结果为:8
--查找'no zuo no die'中'no'从第8位开始检索,第二次出现的位置
select instr('no zuo no die','no',8,2) from dual;
--结果为:0