I want to replace ALL ', with '|| .However, I only replace ', that show up after the very first word begin (case insensitive). We might have multiple BEGIN, but once I meet the word begin for the first time, I want to replace all occurrences AFTER begin.
我想用'||替换ALL' 。但是,我只替换',在第一个单词开头后出现(不区分大小写)。我们可能有多个BEGIN,但是一旦我第一次遇到单词begin,我想要在开始之后替换所有出现的内容。
Here is my code that replaces ALL without exception:
这是我的代码,无异常替换ALL:
regexp_replace(column_name, ''',', '''||', 1, 0, 'i');
Thanks
1 个解决方案
#1
2
You could simply find the position of the first word begin in your column and add to position
parameter of regexp_replace
您可以在列中找到第一个单词begin的位置,并添加到regexp_replace的position参数
So you should use this
所以你应该使用它
regexp_replace(column_name, ''',', '''||', regexp_instr(column_name, '\sbegin\s', 1, 1, 0, 'i'), 0, 'i');
Editted: According to suggestion from Gary_W
, you should consider using keyword '\sbegin\s' (updated in above code) to avoid finding wrong word when begin
is part of another word like function get_beginning_status
.
编辑:根据Gary_W的建议,您应该考虑使用关键字'\ sbegin \ s'(在上面的代码中更新),以避免在begin是另一个单词(如函数get_beginning_status)的一部分时找到错误的单词。
P/S: Using \s
instead of non-breaking-space
in case string text in column_name
have line break
P / S:如果column_name中的字符串文本有换行符,则使用\ s而不是非中断空格
#1
2
You could simply find the position of the first word begin in your column and add to position
parameter of regexp_replace
您可以在列中找到第一个单词begin的位置,并添加到regexp_replace的position参数
So you should use this
所以你应该使用它
regexp_replace(column_name, ''',', '''||', regexp_instr(column_name, '\sbegin\s', 1, 1, 0, 'i'), 0, 'i');
Editted: According to suggestion from Gary_W
, you should consider using keyword '\sbegin\s' (updated in above code) to avoid finding wrong word when begin
is part of another word like function get_beginning_status
.
编辑:根据Gary_W的建议,您应该考虑使用关键字'\ sbegin \ s'(在上面的代码中更新),以避免在begin是另一个单词(如函数get_beginning_status)的一部分时找到错误的单词。
P/S: Using \s
instead of non-breaking-space
in case string text in column_name
have line break
P / S:如果column_name中的字符串文本有换行符,则使用\ s而不是非中断空格