在 Oracle 中用 RegEx 替换列中的值

Posted

技术标签:

【中文标题】在 Oracle 中用 RegEx 替换列中的值【英文标题】:Replacing values from a column with RegEx in Oracle 【发布时间】:2017-01-20 08:27:27 【问题描述】:

我需要编辑 Oracle 数据库中列的值。在此,值遵循一个模式:

123456789X

修改需要以下改动:

添加六个 0 在 0 和 X 之间添加空格

123456789000000 X

我需要在单个查询中使用模式或 RegExp 进行此更改。

谢谢

【问题讨论】:

模式是什么?请提供更多详细信息。 列的模式用引号表示,值遵循相同的模式但要添加到更多值(一些 0 和空白)。 信息不足,无法提供解决方案 @MarcusStern 那么,如果字符串是Qwerty1234XFred 或...怎么办?输入字符串变成输出字符串的算法是什么? 【参考方案1】:

使用regexp_replace 函数转换字符串。

您可以定义适当的转换规则,例如

SELECT REGEXP_REPLACE('Qwerty123456X', 
'([[:digit:]])([[:alpha:]])', -- Rule : Digit followed by Number 
'\1<bla>\2') CITY -- insert <bla> between
FROM DUAL;

---> Qwerty123456<bla>X

【讨论】:

以上是关于在 Oracle 中用 RegEx 替换列中的值的主要内容,如果未能解决你的问题,请参考以下文章

在MySQL中用regex搜索并替换字段

将列中的 NA 替换为相邻列中的值

如何将 JSON 中的值替换为 RegEx 在使用 Python 的文件中找到的值?

使用 dplyr [重复] 有条件地将一列中的值替换为另一列中的值

Oracle - 用另一列中的值填充列中的空值

用 D 列中的值有条件地替换 A、B、C 列中的值