oracle正则表达式regexp_substr、regexp_like(11g好像不支持)、regexp_replace是无法像其他正则表达式一样用[u4e00-u9fa5]来匹配中文的。
所以,我们需要用另一种方式来实现oracle正则表达式匹配中文。
我们需要用到oracle的内置函数UNISTR(str):
ASCIISTR语法:asciistr(str) 功能:返回字符串的规则表现形式,英文和数字变为规则的,中文则前面有‟‟符号,返回unicode编码形式。
UNISTR(str)函数是相反的过程,将unicode编码变为字符。
用法:
select regexp_instr('abc中文测试','[' || unistr('4e00') || '-' || unistr('9fa5') || ']') from dual;