如何将Oracle中含regexp_instr的SQL语句转换为Impala兼容写法?
Oracle REGEXP_INSTR 转 Impala 兼容写法
首先,先修正你原SQL里的语法错误(括号不匹配),正确的Oracle语句应该是:
substr(err_log, regexp_instr(err_log,'regular expression') + 6, 3)
Impala原生支持REGEXP_INSTR函数,其参数逻辑和Oracle基本一致——默认返回匹配模式的起始位置,因此直接迁移即可,兼容写法如下:
substr(err_log, regexp_instr(err_log, 'regular expression') + 6, 3)
如果要处理匹配不到目标模式的场景(避免因起始位置为0导致的异常),可以添加判断逻辑:
case when regexp_instr(err_log, 'regular expression') > 0 then substr(err_log, regexp_instr(err_log, 'regular expression') + 6, 3) else null end
内容的提问来源于stack exchange,提问作者Chloe Baek
相关产品推荐
相关产品推荐

