enquote_literal替代包含单引号的字符串

时间:2017-06-08 12:38:58

标签: sql oracle

我必须使用dbms_assert.enquote_literal来引用字符串。该字符串是模式名称,我不知道它是作为我的函数的参数。我唯一知道的是模式名称可能包含单引号。对于此类字符串,enquote_literal会因ORA-06502: PL/SQL: numeric or value error而失败。是否有任何替代方法可以代替enquote_literal使用与enquote_literal相同的输出。

2 个答案:

答案 0 :(得分:2)

不是一个好的解决方案,但是一个简单的解决方案

REPLACE(dbms_assert.enquote_literal(REPLACE(text,'''','''''')),
    '''''','''');

输入文字

hello'world

输出文字

'hello'world'

如果您不需要出现报价

dbms_assert.enquote_literalreplace(text,'''',''));

答案 1 :(得分:0)

尝试' q'引用Read here

select q'['<you string>']' from dual;

演示

SQL> select q'['Hello'workddl']' Col from dual;

COL
--------------
'Hello'workddl'