On Wednesday, August 4, 2021, Tim Uckun <timuc...@gmail.com> wrote:

> I want to do something like this
>
> SELECT REGEXP_REPLACE('some_string','(.*)
> (.*)',some_function_that_returns_string('\2',' \1'));
>
> Is this possible at all?
>
>
Generally I’d say yes, it is possible to combine multiple subqueries
together to get the desired end result.  Using regexp_match and performing
the conversion on its result is fairly trivial.  In theory then write
regexp_replace like above but ignore the capture groups and just stick in
the column into,which you saved the computed value as the direct and
complete replacement.

But no, you cannot directly write:  f(x, y, g(a)) where a is the
replacement string because you don’t know what a is when the inner function
g is evaluated first.  You need:  f(x, y, g(h(x, y))) where h is the
matching function, g is the transform, f is the replacement of the third
argument into the x source text, and y is the pattern.  I presume the y is
going to be the same value here but that isn’t required.

David J.

Reply via email to