regex - 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 字段中包含多个这些字符串,理想情况下,我希望在一个语句而不是循环中替换它们。
解决方案
正如 mathguy 所说,您可以在用例中使用反向引用。试试这样的查询。
SELECT REGEXP_REPLACE ('test PI20099742', '([A-Z]{2}[0-9]{8})', '/cs/page.asp?id=\1')
FROM DUAL;
推荐阅读
- bash - 循环一系列日期。d=$(date -I -d "$d + 1 day") 不工作
- javascript - 检测 selectionStart 处的单词是否为 URL
- sql - 子账户 sql
- ios - 循环时图像不会更新
- android - 使用应用或退出应用时如何处理整个应用的状态
- java - LinkedBlockingQueue 和 addAll()
- ansible - 仅使用 FQDN 及其主机名访问主机,而不使用 FQDN
- numpy - 将numpy数组转换为结构化类型
- react-native - axios 帖子不起作用,但相同的 url 正在使用 fetch api
- python - 如何按颜色填充第三个三角形(Python,Turtle)