Oracle 正则表达式替换问题
Oracle regex replace issue
我有一个 oracle table,其中一列的值低于
,21A,22,21,28,28
我想进行正则表达式替换以删除 ,21(完全匹配),但它会删除 ,21A
中的值
下面是我的查询,
update STUDENT set SCORES = REGEXP_REPLACE(SCORE, ',21' , '', 1, 1) where STUDENT_ID = 1;
如何实现?有什么想法吗?
对于您的情况,您可以使用 ,21(\W|$)
正则表达式。它匹配后跟非单词字符或字符串结尾的 ,21
。
REGEXP_REPLACE(SCORE, ',21(\W|$)' , '', 1, 1)
Here is how 您可以在 Oracle 中执行全词搜索和替换 SQL:
regexp_replace(
haystack
, '(\W|^)(' || what_to_replace || ')(\W|$)'
, '' || with_what || ''
, 1
, 0
, 'imn'
)
我有一个 oracle table,其中一列的值低于
,21A,22,21,28,28
我想进行正则表达式替换以删除 ,21(完全匹配),但它会删除 ,21A
中的值下面是我的查询,
update STUDENT set SCORES = REGEXP_REPLACE(SCORE, ',21' , '', 1, 1) where STUDENT_ID = 1;
如何实现?有什么想法吗?
对于您的情况,您可以使用 ,21(\W|$)
正则表达式。它匹配后跟非单词字符或字符串结尾的 ,21
。
REGEXP_REPLACE(SCORE, ',21(\W|$)' , '', 1, 1)
Here is how 您可以在 Oracle 中执行全词搜索和替换 SQL:
regexp_replace(
haystack
, '(\W|^)(' || what_to_replace || ')(\W|$)'
, '' || with_what || ''
, 1
, 0
, 'imn'
)