gpt4 book ai didi

sql - 在 all_views 上过滤 "text"列

转载 作者:行者123 更新时间:2023-12-03 14:02:13 25 4
gpt4 key购买 nike

有什么办法可以过滤 正文 oracle 的专栏 all_views table ?

例如:

SELECT * 
FROM ALL_VIEWS
WHERE UPPER(TEXT) LIKE '%FOO%';

异常(exception):
ORA-00932: inconsistent datatypes: expected NUMBER got LONG
00932. 00000 - "inconsistent datatypes: expected %s got %s"

编辑:
DESC ALL_VIEWS
Name Null Type
---------------- -------- --------------
OWNER NOT NULL VARCHAR2(30)
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG()
TYPE_TEXT_LENGTH NUMBER
TYPE_TEXT VARCHAR2(4000)
OID_TEXT_LENGTH NUMBER
OID_TEXT VARCHAR2(4000)
VIEW_TYPE_OWNER VARCHAR2(30)
VIEW_TYPE VARCHAR2(30)
SUPERVIEW_NAME VARCHAR2(30)

最佳答案

不幸的是,您无法通过 select 语句即时转换为 clob。 to_lob 函数适用于 INSERT 语句,但这意味着您需要设置一个单独的表并使用 to_lob 进行插入。

您可以在 pl/sql 中对 varchar 进行赋值转换,并且大多数情况下您会发现 all_views 中的 text_length < 32767,因此这将涵盖“大多数”情况,尽管它不像仅选择那样好:

declare

l_search varchar2(1000) := 'union';
l_char varchar2(32767);

begin
for rec in (select * from all_views where text_length < 32767)
loop
l_char := rec.text;
if (instr(l_char, l_search) > 0) then
dbms_output.put_line('Match found for ' || rec.owner || '.' || rec.view_name);
end if;
end loop;

end;

在这里,我在文本字段中搜索字符串“union”。

希望有帮助。

关于sql - 在 all_views 上过滤 "text"列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9228812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com