Oracle常用的字符函数使用详解(字符截取、定位、填充、替换等等)

(1)、字符大小写转换函数:

 1、UPPER:字符全部转成大写
 2、LOWER:字符全部转成小写
 3、INITCAP:字符首字母大写

使用示例:
在这里插入图片描述

(2)去除空白及字符串函数 TRIM,LTRIM,RTRIM**

1、trim:

1、默认截掉字符两侧的空白

使用示例:
在这里插入图片描述

2、trim([trim_str from] x): 从字符串X中截掉指定字符

使用示例:
在这里插入图片描述
通过实践发现trim([trim_str from] x)只能截取最左边或者最右边单个指定字符
如下图:字符串中间的o并未去掉
在这里插入图片描述

2、LTRIM(X[,TRIM_STR]):

    截掉字符串X左边的TRIM_STR(指定截取)字符(可一次性截取多个字符)
    如图:把字符串左侧的指定字符给截取掉了

在这里插入图片描述
2、RTRIM(X[,TRIM_STR]):

    截掉字符串X右边的TRIM_STR(指定截取)字符。(可一次性截取多个字符)
    如图:把字符串右侧的指定字符给截取掉了

在这里插入图片描述
(3) substr 、 substrb截取字符函数

substr:根据字符长度来获取字符串(常用)
substrb:根据字节长度来取字符串

补充:oracle里面定义字符类型默认长度是byte;如:varchar2(10)表示的是10个字节长度

substr:
格式:substr(str, start_position, length):
str:需要进行截取操作的字符串
start_position:从字符串的第几位开始截取
length:截取的长度

如图:从字符串左侧的第2位开始截取5个字符
在这里插入图片描述
substrb:
在这里插入图片描述
从字符串右侧往左的第5位开始截取3个字符
在这里插入图片描述
(4)length、lengthb查询字符串长度

length:显示的是字符串的字符长度;
lengthb:显示的是字符串的字节长度;

length:按字符计算长度,汉字、英文、数字都是1个字符
在这里插入图片描述
在这里插入图片描述
lengthb:按字节计算长度,英文、数字都是1个字节,汉字是三个字节
示例:
在这里插入图片描述
(5)concat、||字符串连接

concat:CONCAT(X,Y) 只能拼接两个字符串,可以嵌套使用
||: X||Y||Z,可拼接多个字符串

concat使用示例:
在这里插入图片描述
||使用示例:
在这里插入图片描述
(6)instr:字符查找函数

返回指定字符在字符串中的位置

1、instr(原字符串,要查询的字符或者字符串)

返回第1个字符b从左往右的所在位置

在这里插入图片描述
2、instr(原字符串,要查询的字符或者字符串,起始位置,匹配序号)

返回第2个字符b从左往右的所在位置

在这里插入图片描述
(6)ASCII、CHR:ascii

字符与ascii码的相互转换
ascii: 将字符转换成ascii码值
chr:   将ascii码值转换成字符

使用示例:
在这里插入图片描述
(7)lpad、rpad字符填充函数

lpad(需要填充的字符串,填充后的字符长度,填充字符串):向字符左边填充字符串
在这里插入图片描述
rpad(需要填充的字符串,填充后的字符长度,填充字符串):向字符右边填充字符串
在这里插入图片描述(8)replace、regexp_replace、translate:替换函数

1、replace(字符串,要被替换的字符,替换字符)

若替换字符为空,则仅去掉要被替换的字符

在这里插入图片描述
2、regexp_replace(字符串,要被替换的字符,替换字符)
功能与replace相似,但支持正则表达式

将字符串中含有的a和c字符都替换成*

在这里插入图片描述
3、translate
translate(字符串,要被替换的字符,替换字符)
注意:替换字符要与被替换的字符长度一致,多出来的字符将不会被替换进去,如下图的C
在这里插入图片描述
(9) extract,to_char提取日期及获取时间差
1、extract(year/month/day from 日期/时间戳)

select sysdate
  ,extract(year from sysdate) as year  --提取年
  ,extract(month from sysdate) as month--提取月
  ,extract(day from sysdate) as day    --提取日
  ,extract(hour from t1 ) as hour      --提取时
  ,extract(minute from t1 ) as minute  --提取分
  ,extract(second from t1 ) as second  --提取秒
  ,extract(day from t2 -t1) as day_diff --日期差
  ,extract(hour from t2 -t1) as hour_diff --小时差
from 
   (select to_timestamp('20200102 10:15:03','yyyymmdd hh24:mi:ss') t1
          ,to_timestamp('20200105 17:23:08','yyyymmdd hh24:mi:ss') t2 from dual) t

在这里插入图片描述
2、to_char
to_char(日期/时间戳。‘yyyy’/mm/[…])
依次截取年月日时分秒

select sysdate
 , to_char(sysdate,'yyyy') 
 , to_char(sysdate,'mm') 
 , to_char(sysdate,'dd') 
 , to_char(sysdate,'hh24') 
 , to_char(sysdate,'mi') 
 , to_char(sysdate,'ss')    
 , to_char(to_date('20200102 10:15:03','yyyymmdd hh24:mi:ss'),'ss') 
from 
   (select to_timestamp('20200102 10:15:03','yyyymmdd hh24:mi:ss') t1
          ,to_timestamp('20200105 17:23:08','yyyymmdd hh24:mi:ss') t2 from dual) t

以上函数都可以结合实际情况联合使用:
范例:substr&instr

数据:
在这里插入图片描述
如何截取出字符串中的0.2?

字符串:d|我|银行|wer|0.2|hh|sien|000

首先,instr定位0.2前后的‘|’;
然后,substr进行截取
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值