更新 oracle8i 数据库中我们无法使用正则表达式的记录
Posted
技术标签:
【中文标题】更新 oracle8i 数据库中我们无法使用正则表达式的记录【英文标题】:update records in oracle8i database where we cannot use regex 【发布时间】:2018-08-27 04:21:20 【问题描述】:我手头有一个任务,我需要更新大约 200 条记录的电话号码格式。当前格式为
xwz@gmail.com,04163304166@redcoal.com
新格式应该是
xwz@gmail.com,+614163304166@redcoal.com
我尝试使用regex
,但 oracle 8i 不允许我使用它。
【问题讨论】:
您能否改进您的架构设计并将它们存储在单独的列中?单个关系数据库列中的 CSV 数据是一种糟糕的设计气味 @Phil 是的,你是对的,但它是一个遗留应用程序,更改架构也会触发应用程序端的更改,这是我们不想要的。 你可能想把这些信息放在你的问题的前面和中心,这样你就不会因为“糟糕的设计”(这种情况经常发生) 您可以将 PLSQL 与 INSTR 和 SUBSTR 函数一起使用。这实际上取决于您的数据格式。 【参考方案1】:这看起来是一种非常糟糕的数据格式——在一个字符串中存储多个值。但是,您可以使用replace()
,至少对于您给出的示例:
select replace(col, ',0', ',+61')
from t;
我会检查这是否符合您的要求。最后,查询可能如下所示:
update t
set col = replace(col, ',0', ',+61')
where col like '%,0';
【讨论】:
以上是关于更新 oracle8i 数据库中我们无法使用正则表达式的记录的主要内容,如果未能解决你的问题,请参考以下文章
PySpark 无法通过 sparkContext/hiveContext 读取 Hive ORC 事务表?我们可以使用 Pyspark 更新/删除配置单元表数据吗?