使用 Oracle regexp_replace 替换字符后的所有匹配项
Replace All Occurrences After a Character using Oracle regexp_replace
我想用 '|| 替换所有 ', 。但是,我只替换 ', 在第一个单词 begin(不区分大小写)。我们可能有多个 BEGIN,但是一旦我第一次遇到 begin 这个词,我想替换所有出现在 begin 之后的地方。
这是我的代码,无一例外地替换了 ALL:
regexp_replace(column_name, ''',', '''||', 1, 0, 'i');
谢谢
您可以简单地在您的列中找到第一个单词 begin 的位置,然后添加到 regexp_replace
的 position
参数
所以你应该使用这个
regexp_replace(column_name, ''',', '''||', regexp_instr(column_name, '\sbegin\s', 1, 1, 0, 'i'), 0, 'i');
已编辑:根据 Gary_W
的建议,您应该考虑使用关键字 '\sbegin\s'(在上面的代码中更新)以避免找到 错误的单词 当 begin
是另一个单词的一部分,例如 function get_beginning_status
.
P/S:如果 column_name
中的字符串文本有 line break
,则使用 \s
而不是 non-breaking-space
我想用 '|| 替换所有 ', 。但是,我只替换 ', 在第一个单词 begin(不区分大小写)。我们可能有多个 BEGIN,但是一旦我第一次遇到 begin 这个词,我想替换所有出现在 begin 之后的地方。
这是我的代码,无一例外地替换了 ALL:
regexp_replace(column_name, ''',', '''||', 1, 0, 'i');
谢谢
您可以简单地在您的列中找到第一个单词 begin 的位置,然后添加到 regexp_replace
position
参数
所以你应该使用这个
regexp_replace(column_name, ''',', '''||', regexp_instr(column_name, '\sbegin\s', 1, 1, 0, 'i'), 0, 'i');
已编辑:根据 Gary_W
的建议,您应该考虑使用关键字 '\sbegin\s'(在上面的代码中更新)以避免找到 错误的单词 当 begin
是另一个单词的一部分,例如 function get_beginning_status
.
P/S:如果 column_name
中的字符串文本有 line break
\s
而不是 non-breaking-space