在所有 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 包中查找带引号和双引号的字符串的主要内容,如果未能解决你的问题,请参考以下文章