Вы можете использовать regexp_replace()
следующим образом:
regexp_replace(mycol, '\sschema1\.(\w+_tmp)\s', ' \1 ')
Распределение регулярных выражений:
\s a space
schema1\. litteral string "schema1."
( beginning of a capturing group
\w+ at many alphanumeric characters as possible (including "_")
_tmp litteral string "_tmp"
) end of the capturing group
\s a space
Когда строка соответствует регулярному выражению, соответствующее выражение заменяется на: пробел, затем захваченная часть, затем другой пробел.
Демонстрация на DB Fiddle :
with t as (
select '... from schema1.table_1_tmp ...' mycol
union all select '... from schema1.table_2 ...'
)
select mycol, regexp_replace(mycol, '\sschema1\.(\w+_tmp)\s', ' \1 ') newcol from t
mycol | newcol
:------------------------------- | :---------------------------
... from schema1.table_1_tmp ... | ... from table_1_tmp ...
... from schema1.table_2 ... | ... from schema1.table_2 ...