【问题标题】:Replace parts in a string using REGEXP_REPLACE使用 REGEXP_REPLACE 替换字符串中的部分
【发布时间】:2014-11-17 18:36:39
【问题描述】:

嗨,我在 oracle 中有一个这样的字符串:

 temp_a, temp_b, temp_c

我想得到的是:

 e.temp_a, e.temp_b, e.temp_c

所以我想写一个“e”。在此字符串的每个部分之前
我在互联网上搜索,找到了拆分字符串或替换更简单字符串的示例,但没有任何内容可以指导我解决问题

【问题讨论】:

    标签: regex oracle plsql oracle11g plsqldeveloper


    【解决方案1】:
    select regexp_replace('temp_a, temp_b, temp_c',
                  '([a-zA-Z0-9_]+)(,?)', 
                   'e.\1\2') from dual;
    

    这应该可行。

    【讨论】:

    • 赞成,因为它有效,而且正是我们所要求的。我同意帕特里克的观点,这里不需要正则表达式,只要有合理可读的替代方案,我就会倾向于避免使用它们(在 Oracle 中)。
    【解决方案2】:

    我刚刚注意到您专门要求使用正则表达式,但为了它的价值,我可能会这样做:

    rtrim( replace( 'e.'||your_string, ', ', ', e.'), 'e.')
    

    【讨论】:

    • 不,我希望它是通用的。这只是一个例子
    • 觉得太简单了。 :) 通用在什么方面呢?什么是不变的,什么不是?始终使用逗号分隔值,始终使用“e”。前缀?
    • 始终以逗号分隔且始终使用 e。字首。话会变
    • 虽然正则表达式很有趣,但我认为这里不需要它们。一切都是为了在正确的情况下使用正确的工具/功能。 Maheswaran 确实提供了一个很好的正则表达式替代方案。
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2012-09-25
    • 2019-08-24
    • 2018-11-23
    • 2015-09-11
    • 2021-03-25
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多