我尝试运行以下查询来查找包含给定关键字的视图:
select *
from ALL_VIEWS
where OWNER = 'SALESDBA'
and TEXT like '%rownum%';
我收到以下错误消息:
ORA-00932: inconsistent datatypes: expected CHAR got LONG
00932. 00000 - "inconsistent datatypes: expected %s got %s"
*Cause:
*Action:
Error at Line: 4 Column: 13
如果我只是从ALL_VIEWS中选择,而不是在TEXT字段中看到查询(TEXT)。
我在这里做错了什么?
答案 0 :(得分:7)
你的问题是TEXT的类型是LONG - 尽管很久很久以前甲骨文都不推荐这种类型,但他们仍然在自己的观点中使用它: - (
要将LONG转换为(可搜索的)CLOB,您可以使用TO_LOB()
功能(请参阅Oracle documentation for TO_LOB()。
不幸的是,这不适用于简单的SELECT
语句。您必须创建一个中间表:
create table search_all_views as
select av.owner, av.view_name, to_lob(text) as text_clob
from ALL_VIEWS av;
然后,您可以使用该表进行搜索:
select *
from search_all_views
where text_clob like '%rownum%';
答案 1 :(得分:2)
您可以使用TEXT_VC作为检查条件的列。例如:
select *
from ALL_VIEWS
where OWNER = 'SALESDBA'
and TEXT_VC like '%rownum%';
我希望这会有所帮助。