【发布时间】:2016-02-19 07:36:14
【问题描述】:
我有一个 oracle 表,其中一列具有以下值,
,21A,22,21,28,28
我想进行正则表达式替换以删除 ,21(完全匹配),但它会删除 ,21A 中的值
以下是我的查询,
update STUDENT set SCORES = REGEXP_REPLACE(SCORE, ',21' , '', 1, 1) where STUDENT_ID = 1;
如何做到这一点?有什么想法吗?
【问题讨论】:
-
@AlexanderDerck,这不起作用。
-
我的坏显然是 oracle 正则表达式没有环视。你不能只检查
,21,并用,代替空字符串吗? -
您可以改正数据库设计并为自己省去其他麻烦吗?此列违反第一范式。如果你被别人的糟糕设计所困扰,我会感受到你的痛苦。
-
@Gary_W,这已经实现并正在运行。此时设计更改将触发许多其他更改。
-
也许
REGEXP_REPLACE(SCORE, ',21(,|$)' , '\1', 1, 1)就够了?甚至REGEXP_REPLACE(SCORE, ',21(\W|$)' , '\1', 1, 1)?
标签: regex oracle regexp-replace