首页 > 解决方案 > Oracle 正则表达式和替换

问题描述

我在包含文本的数据库中有 varchar 字段。我需要将每次出现的任意 2 个字母 + 8 位数字字符串替换为链接,例如 VA12345678 将返回 /cs/page.asp?id=VA12345678

我有一个替换字符串的正则表达式,但是如何用其中一部分是字符串本身的字符串替换它?

SELECT REGEXP_REPLACE ('test PI20099742', '[A-Z]{2}[0-9]{8}$', 'link to replace with')
FROM dual;

我可以在一个 varchar 字段中包含多个这些字符串,理想情况下,我希望在一个语句而不是循环中替换它们。

标签: regexoracle

解决方案


正如 mathguy 所说,您可以在用例中使用反向引用。试试这样的查询。

SELECT REGEXP_REPLACE ('test PI20099742', '([A-Z]{2}[0-9]{8})', '/cs/page.asp?id=\1')
  FROM DUAL;

推荐阅读