首页 > 解决方案 > .REGEXP_REPLACE 用于在列中添加值

问题描述

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

在此处输入图像描述

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

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

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

标签: sqloracle

解决方案


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

UPDATE customers 
SET first_name = 'Shri_' || first_name 
WHERE first_name NOT LIKE 'Mr\_%' ESCAPE '\'

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


推荐阅读