.REGEXP_REPLACE 用于在列中添加值

ASh*_*ma7 2 sql oracle

我想将 'Shri_' 添加到客户表的 First_name 中,仅适用于开头没有 'Mr_' 的名称。客户表数据如下所示:

在此处输入图片说明

我正在使用下面的脚本,但它没有帮助。

update customers set first_name = REGEXP_REPLACE(first_name,'^(?!Mr_)(.*)', 'Shri_\2',1,1);
Run Code Online (Sandbox Code Playgroud)

谁能指出我的正则表达式有什么问题。更具体地说,我正在尝试为这种情况找出正确的正则表达式。

Cai*_*ard 7

正则表达式相当复杂;您可以通过以下方式更简单地解决此问题:

UPDATE customers 
SET first_name = 'Shri_' || first_name 
WHERE first_name NOT LIKE 'Mr\_%' ESCAPE '\'
Run Code Online (Sandbox Code Playgroud)

我怀疑问题是 _ 是一个通配符,但它可以像上面一样转义,所以它不再意味着“任何单个字符”而只是“下划线”