字符串基本操作与函数

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









    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值