首页 > 解决方案 > Regexp_replace 返回无效数字

问题描述

我想从名称中删除诸如 Dr., Mr. Jr. 之类的头衔。Regexp_replace应该搜索并删除 Dr. Mr. Jr 并且搜索应该不区分大小写,最终输出的名称中不应有.or,或额外的空格。

select regexp_replace('DR. Mr. Mr Dr Radha Jr Jr. Krishnan Jr.','(Dr|Mr|Jr)(\W|\w|$|,)',1,0,'i') 
from dual

我收到无效号码错误。

标签: sqloracleregexp-replace

解决方案


以下查询将删除多个空格并修剪前导空格:

SELECT TRIM(REGEXP_REPLACE(
         REGEXP_REPLACE('DR. Mr. Mr Dr Radha Jr Jr. Krishnan Jr.', '(Dr|Mr|Jr)(\W|\w|$|,)', '', 1, 0, 'i')
       , ' {2,}', ' ')) AS "Result"
FROM Dual

它将返回结果为Radha Krishnan

db<>fiddle 上的演示


推荐阅读