【发布时间】:2017-04-09 14:41:15
【问题描述】:
通常我使用这个查询在存储过程的文本中查找字符串:
SELECT *
FROM ALL_SOURCE a
where UPPER(A.TEXT) like UPPER('%text%')
但它似乎不适用于 VIEW。
我尝试使用 ALL_VIEW 表,但没有包含文本的字段(OID_TEXT 也没有)。
是否有在 View 的文本中查找单词的查询?
【问题讨论】:
通常我使用这个查询在存储过程的文本中查找字符串:
SELECT *
FROM ALL_SOURCE a
where UPPER(A.TEXT) like UPPER('%text%')
但它似乎不适用于 VIEW。
我尝试使用 ALL_VIEW 表,但没有包含文本的字段(OID_TEXT 也没有)。
是否有在 View 的文本中查找单词的查询?
【问题讨论】:
在表 all_views 中,文本列的数据类型为 long。您不能直接搜索 LONG。 LONG 不能出现在 WHERE 子句中。它们可以出现在SELECT 列表中,因此您可以使用它来缩小必须检查的行数。
Oracle 建议至少在过去的 2 个版本中将 LONG 转换为 CLOB。
先将 LONG 类型的列转换为 CLOB 类型,然后使用 like 条件,例如:
create table tbl_clob as
select to_lob(long_col) lob_col
from tbl_long;
select *
from tbl_clob
where lob_col like '%form%';
【讨论】: