【发布时间】:2021-12-19 11:30:23
【问题描述】:
我知道我可以在这样的语句中转义字符串:
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;
当然这只返回“myfunction(somestringvariable)”
如前所述,我需要对函数的结果进行转义(不能在函数内部进行,需要在这个 select 语句中进行转义)。
我可以在用“q”转义的字符串中以某种方式使用该函数吗?
谢谢!
【问题讨论】:
-
为什么?函数结果中的引号将被正确传递。只有在编写 SQL 文字时才需要费心。
-
在我需要进行选择的地方不允许使用单引号 - 所以如果函数返回带有单引号的文本,我需要转义它们。
-
不,你没有。列/结果值不需要转义。只有文字需要转义。
-
这个选择的结果被用在一个脚本中(假设我现在不能改变这个脚本)。如果脚本在选择结果中找到单引号,则会引发错误。 q'[somestringvariable]' 在脚本中工作正常,但在这种情况下,我还需要使用带有 somestringvariable 的函数
-
@Hurt: Edit 问题并提供一个minimal reproducible example 来演示实际 问题。这闻起来像 XY problem。
标签: sql oracle function select escaping