Oracle如何按行内花括号占位模板替换字段值生成显示名称
Oracle 按name_format占位符规则生成display_name实现方案
全版本通用写法
你的场景涉及的占位符固定为{first_name}、{last_name}、{surname}三个,直接嵌套REPLACE函数逐层替换占位符为对应字段值即可,无版本兼容问题,执行效率最高:
SELECT account_id, name_format, REPLACE( REPLACE( REPLACE(name_format, '{first_name}', first_name), '{last_name}', last_name ), '{surname}', surname ) AS display_name FROM 替换为你的实际表名;
基于你提供的样例数据执行上述语句,返回结果完全匹配预期:
| account_id | name_format | display_name |
|---|---|---|
| 1 | {first_name} {last_name} {surname} | John Doe john_doe |
| 2 | {surname} {first_name} {last_name} | jane_doe Jane Doe |
| 3 | {first_name} {last_name} | Baby Doe |
注意事项
- 若业务中字段值本身可能包含
{字段名}格式的内容,需要提前做转义处理,避免出现误替换。 - 固定字段场景下不推荐使用正则、动态SQL等复杂实现,嵌套
REPLACE的可维护性和执行效率最优。 - 如果后续需要支持的占位符字段较多,可在Oracle 12c及以上版本使用XMLQUERY动态匹配占位符,新增字段时无需逐层追加REPLACE逻辑,只需在PASSING子句中补充对应字段的别名映射即可。
内容的提问来源于stack exchange,提问作者khairul
相关产品推荐
相关产品推荐

