sql利用正则表达式提取数字及固定字符串

需求:最近boss要求做一个专项数据,提取所有数据中涉及酒驾/醉驾但没有正常处理的数据,实现的原理是在描述中查找是否有酒精含量,有就提取出来判断是否酒驾/醉驾,这就涉及到需要用到正则表达式提取数字和字符串。特此做个记录方便后续查看。

常见正则表达式运算符

sql利用正则表达式提取数字及固定字符串_第1张图片

sql利用正则表达式提取数字及固定字符串_第2张图片

查看相关资料后发现有以下函数,其中REGEXP_SUBSTR函数符合本次要求

REGEXP_LIKE 类似于 LIKE 运算符,但执行正则表达式匹配而不是简单的模式匹配
REGEXP_INSTR 在给定字符串中搜索某个正则表达式模式,并返回匹配项的位置。
REGEXP_REPLACE 搜索某个正则表达式模式并使用替换字符串替换它
REGEXP_SUBSTR 在给定字符串中搜索某个正则表达式模式并返回匹配的子字符串

 REGEXP_SUBSTR使用参数    REGEXP_SUBSTR(srcstr, pattern [, position[, occurrence [, match_option]]])

分析数据中的文字记录后发现涉及酒精检查的记录方式固定格式为以下几种,

“……酒精测试含量为88mg/100ml……”

“……酒精测试含量为288mg/100ml……”

“……酒精测试含量为88.11mg/100ml……”

得出格式为2~3位数字+【可能存在的一位小数点和1~2位小数】+100ml

即正则表达式应该为‘[0-9]+(\.[0-9]+)*(mg/100ml)’

sql利用正则表达式提取数字及固定字符串_第3张图片

根据以上正则表达式去所有数据中匹配提取出酒精含量后与酒驾20mg/100ml和醉驾标准80mg/ml进行比对,判断是否酒/醉驾。

你可能感兴趣的:(Oracle,正则表达式,sql,oracle,pgsql)