Oracle 11g中嵌套正则表达式处理姓名格式问题求助
Oracle 11g姓名数据正则替换解决方案
针对你遇到的Nancy (Alice)转换为Nancy Alice时出现双空格的问题,可使用以下正则表达式解决:
SELECT REGEXP_REPLACE(your_name_column, '\s*\((.*?)\)\s*', ' \1') AS formatted_name FROM your_table;
逻辑说明:
\s*:匹配括号前后的零个或多个空格,避免替换后出现多余空格\(和\):转义匹配括号本身(.*?):非贪婪匹配括号内的姓名内容(确保只匹配到第一个右括号,避免多括号场景出错)- 替换为
\1:用单个空格加括号内的内容替换匹配到的整体,保证姓名间只有一个空格
测试示例:
- 原数据:
Nancy (Alice)→ 转换后:Nancy Alice - 原数据:
Nancy (Alice)→ 转换后:Nancy Alice - 原数据:
John (Michael) (Brown)→ 转换后:John Michael Brown
如果你的场景中括号内只有单个姓名部分,也可以简化为更高效的写法(但非贪婪匹配兼容性更强):
SELECT REGEXP_REPLACE(your_name_column, '\s*\(([^)]+)\)\s*', ' \1') AS formatted_name FROM your_table;
内容的提问来源于stack exchange,提问作者Michelle H
相关产品推荐
相关产品推荐

