sql - .REGEXP_REPLACE 用于在列中添加值

标签 sql oracle

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

enter image description here

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

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

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

最佳答案

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

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

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

关于sql - .REGEXP_REPLACE 用于在列中添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61265656/

相关文章:

sql - 将 Unixtime 转换为日期时间 SQL (Oracle)

sql - 在Oracle中将行动态转换为列

sql - 为什么我无法在临时表上创建索引?

java - 如何从与mysql中的jsp中的外键关联的两个表中检索数据

sql - 从结果集中消除部分重复行

mysql - 在简单查询中使用文件排序

sql - 有没有办法确定 SQL Server 存储过程返回记录集

oracle - 从给定表中获取数据范围之间的特定日期

PHP - 具有未知数量参数的安全 PDO 准备好的语句

SQL连接问题