(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进行截取