在所有 oracle 包中查找带引号和双引号的字符串

Posted

技术标签:

【中文标题】在所有 oracle 包中查找带引号和双引号的字符串【英文标题】:find string with quotes and double quotes in all oracle packages 【发布时间】:2018-07-28 06:46:59 【问题描述】:

我试图找到一个查询,它将返回所有包和过程中的所有字符串,如like '2%'。例如在动态查询中

WHEN SUBSTR(S.project,0,1) LIKE ''2%'' THEN ''newProject''

和普通查询一样

WHERE B.project LIKE '2%'

我试过这个查询

select *
  from user_source u
 where u.type in ('FUNCTION', 'PACKAGE','PACKAGE BODY', 'TRIGGER','PROCEDURE')
   and upper(u.text) like upper('%LIKE%')

但我无法找到可以在动态和静态查询中为like '2%' 提供正确结果的查询。

【问题讨论】:

动态和静态查询是什么意思。你在过程/触发器中指的是execute immediate吗? 是的,execute immediate 【参考方案1】:

这里有一个例子:处理单引号时必须转义,使用“q”引用机制更简单。

SQL> create or replace function f_test return number is
  2    l_cnt number;
  3  begin
  4    select count(*)
  5      into l_cnt
  6      from emp
  7      where empno like '7%';
  8    return l_cnt;
  9  end;
 10  /

Function created.

SQL> select f_test from dual;

    F_TEST
----------
        12

SQL> select *
  2  from user_source
  3  where lower(text) like '%' || q'[like '7%']' ||'%';

NAME       TYPE               LINE TEXT
---------- ------------ ---------- ------------------------------
F_TEST     FUNCTION              7     where empno like '7%';

SQL>

【讨论】:

以上是关于在所有 oracle 包中查找带引号和双引号的字符串的主要内容,如果未能解决你的问题,请参考以下文章

oracle 字符串 单引号

数据库插入语句单引号和双引号区别

shell脚本中单引号和双引号的区别

oracle 如何插入带有引号''和连接符的字符串

使用正则表达式在 C# 中使用转义引号查找带引号的字符串

JavaScript字符串单引号和双引号的使用