今天遇到的问题是:
我需要一个201802281530时间格式的字符串(即年月日时分),但是读取的Oracle数据库里只有2018-02-28 15:30:00 这种格式的char类型。由于程序大都是直接调用其他方法,不方便在程序内操作,只能在Oracle读取时解决问题。
解决后的最终sql代码为:
substr(regexp_replace(datatime,'[^0-9]+',''),1,12)
datatime即为2018-02-28 15:30:00 这种格式。
这里用到了substr方法、regexp_replace方法以及正则表达式,其实在Oracle的字符串操作里,regexp_replace和regexp_substr这两个方法都很常用,在此学习下:
regexp_replace
有6个参数:
第一个参数:srcstr,是要操作的字符串
第二个参数:pattern,要替换掉的字符串,支持正则表达式
第三个参数:replacestr,是要替换成的字符串
第四个参数:position,是起始位置,即从第几个位置开始匹配。(默认为1)
第五个参数:occurrence,标识第几个匹配组(默认为0全部都替换掉)
第六个参数:modifier,是取值范围:
i:大小写不敏感;
c:大小写敏感;
n:点号 . 不匹配换行符号;
m:多行模式;
x:扩展模式,忽略正则表达式中的空白字符。
regexp_substr
有5个参数:
第一个参数:srcstr,是要切割的字符串
第二个参数:pattern,要切割掉的字符串,支持正则表达式
第四个参数:position,是起始位置,即从第几个位置开始匹配。(默认为1)
第五个参数:occurrence,标识第几个匹配组(默认为1)
第六个参数:modifier,是取值范围:(默认为c)
i:大小写不敏感;
c:大小写敏感;
n:点号 . 不匹配换行符号;
m:多行模式;
x:扩展模式,忽略正则表达式中的空白字符。