Oracle - 如何在带有 q 的转义中使用函数

Oracle - How to use a function inside an escape with q

我知道我可以在这样的语句中转义字符串:

select 'That''s a really funny ''joke''' from dual; --returns: That's a really funny 'joke'

或者像这样:

select q'[That's a really funny 'joke']' from dual; --returns: That's a really funny 'joke'

两者都工作正常。

假设我需要在那个 select 语句中准确地转义一个字符串,我还需要使用一个函数。

select q'[myfunction(somestringvariable)]' from dual;

当然这只是 returns "myfunction(somestringvariable)"

如前所述,我需要转义函数的结果(不能在函数内部完成,转义需要在这个 select 语句中进行)。

我可以在用“q”转义的字符串中以某种方式使用该函数吗?

谢谢!

Oracle 不支持模板文字。


只需使用:

SELECT myfunction(somestringvariable) FROM DUAL;

或者,如果函数没有 return 字符串:

SELECT TO_CHAR(myfunction(somestringvariable)) FROM DUAL;

如果您想连接带引号的字符串文字和函数结果,请使用字符串连接。

SELECT q'[That's a really funny 'joke']'
       || myfunction(somestringvariable)
FROM   DUAL;

在函数结果中双引号:

REPLACE(myfunction(somestringvariable), '''', '''''')