#REGEXP_SUBSTR

regexp_substr
REGEXP_SUBSTR ( expr , regexp , position , occurrence , match_para , subexpr )

REGEXP_SUBSTR为正则表达式函数,其功能与参数定义均类似于REGEXP_INSTR,但它不返回子字符串的位置,而是返回子字符串本身。函数返回值为VARCHAR类型。

expr

expr的值须为字符型,或可转换为字符型的其他类型,不能为转义字符。

  • 当expr的值为NULL时,函数返回NULL。

  • expr不支持32000字节以上的XMLTYPE、LOB类型数据。

  • 函数使用输入字符集定义的字符计算字符串(仅支持UTF-8)。

regexp

RegExp,长度不超过512字节,支持转义字符,可为NULL,此时函数返回NULL。

position

指定开始进行匹配的偏移量,系统从expr的第position个字符开始匹配,在找到第一个正则匹配项后,继续从匹配项之后的第一个字符开始,查找第二个匹配项,直到expr的最后一个字符。

position为与expr相同的通用表达式,须为数值型数据,或可转换为NUMBER类型的其他类型数据。且其值应为一个正整数,内部处理时统一转换为BIGINT类型。

  • 当position为NULL时,函数返回NULL。
  • 当position为0或负数时,函数返回Out of range错误。
  • 当position为小数时,截断保留整数作为position值。
  • 当position超出expr值的长度时,不执行匹配,函数返回NULL。
  • 未指定此值时,默认从第一个字符开始匹配。

occurrence

指定按regexp在expr中第occurrence次匹配到的子字符串执行替代,occurrence为与expr相同的通用表达式,须为数值型数据,或可转换为NUMBER类型的其他类型数据,且其值应为一个正整数,内部处理时统一转换为BIGINT类型。

  • 当occurrence为NULL时,函数返回NULL。
  • 当occurrence为0或负数时,函数返回Out of range错误。
  • 当occurrence为小数时,截断保留整数作为occurrence值。
  • 当occurrence超出匹配次数时,不执行匹配,函数返回expr值。
  • 未指定此值时,默认为第1次匹配。

match_para

正则匹配参数,与REGEXP_LIKE中的含义相同。

subexpr

subexpr参数用于当regexp中含有子表达式时,指定函数返回某一个子表达式所匹配到的位置,subexpr的值只能为0到9之间的某个整数(对于小数将截断为整数)。

  • 如果有小数点,则截断。
  • 如果subexpr是0,则返回匹配整个pattern的位置。
  • 如果subexpr > 0,则返回匹配subxpr对应的子表达式的位置。
  • 如果subexpr >= 10,则返回NULL。
  • 缺省默认值是0。
  • 如果subexpr超过pattern子表达式数量,则返回NULL。

示例

SELECT REGEXP_SUBSTR('1234567890', '(123)(4(56)(78))', 1, 1,'i', 2) "REGEXP_SUBSTR" FROM DUAL;
REGEXP_SUBSTR
--------------
45678

SELECT REGEXP_SUBSTR('1234567890', '[0-9]', 1, 5) "REGEXP_SUBSTR" FROM DUAL;
REGEXP_SUBSTR
-------------
5
pdf-btn 下载文档
copy-btn 复制链接