【问题标题】:REGEX using dynamic sql [duplicate]使用动态 sql 的正则表达式 [重复]
【发布时间】:2021-06-19 12:06:11
【问题描述】:

我有下面的正则表达式,它使用 sql 可以很好地工作,但同样不能包含在动态 sql qyery 中,尝试转义所有字符但仍然抛出错误。

这是我尝试过的:

 reg := 'select regexp_replace(data, ||'\.||(docx|pdf|msg)|| ', ||'.\1, ') from table where id=1'

您能帮忙将它包含在动态 sql 中吗?

   select regexp_replace(data, '\.(docx|pdf|msg) ', '.\1, ') from table where id=1;

【问题讨论】:

  • 啊哈!您为什么不使用之前问题中的正确答案?有人会认为它应该比我给你的(你在这里使用的)更好。

标签: oracle oracle11g dynamic-sql


【解决方案1】:

看来单引号困扰着你。

如果是,使用q-quoting机制,如:

SQL> declare
  2    reg varchar2(500);
  3  begin
  4    reg := q'[select regexp_replace(data, ||'\.||(docx|pdf|msg)|| ', ||'.\1, ') from table where id=1]';
  5  end;
  6  /

PL/SQL procedure successfully completed.

SQL>

但是,当有一些东西动态时,我们会使用动态 SQL。您的查询中没有任何动态,所以 - 为什么要使用它?你确定你需要它吗?您要解决的“真正”问题是什么?也许它根本不需要动态 SQL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2016-01-17
    相关资源
    最近更新 更多