前言:
在大数据时代,我们经常要分析很多非结构化的数据,同时也要分析很多非标准的数据。如“0.78吨”,“CYJ23w-ABC”,“12.12元/小时”。因此我们需要计算累计多少吨时,需要将对应吨数求和处理,需要获取小时平均单价等。都需要在字符串里面去截取数字的部分。
一、思路
我们有两种办法去处理这种数据,如果是数字开头的数据,我们可以使用regexp_substr函数加正则表达式的方式来直接截取。我们也可以使用regexp_replace来替换非数字的部分的。
1、获取字符串中的小数及整数部分。
代码:
select regexp_substr('12.12元/小时', '\d*(\d*\.\d*)?') from dual
效果:
解析:
如图所示,此时我们使用正则表达式,匹配即可。如果看不懂直接复制就行。
2、获取字符串中数字部分
代码:
select regexp_replace('CYJ23w-ABC','[^[:digit:]]','') from dual;
效果:
解析:
其中[[:digit:]] 代表匹配任何数字,[^[:digit:]]代表任何非数字,然后将非数字部分替换为空。
二、总结
两种办法各有利弊,大家可以根据实际情况使用哦,如果有帮助,欢迎留言讨论。