如何解决在Oracle VARRAY集合中搜索值
我有一个Oracle表,该表的列类型为VARRAY Oracle集合类型。
create or replace
TYPE FUSION_USER.FUSION_KEY_LIST AS VARRAY(20) OF VARCHAR2(80);
CREATE TABLE FUSION_QUEUE_AUDIT
(
"XML_ID" NUMBER NOT NULL ENABLE,"XML_MESSAGE_TYPE" NUMBER(4,0) NOT NULL ENABLE,"XML_MESSAGE" SYS.XMLTYPE,"KEY_ID" NUMBER,"KEY_LIST" FUSION_USER.FUSION_KEY_LIST,"STATUS_IND" VARCHAR2(1 BYTE) NOT NULL ENABLE
);
“ KEY_LIST”列中的数据存储为:
FUSION_USER.FUSION_KEY_LIST(1600458446,N)
FUSION_USER.FUSION_KEY_LIST(1600488742,N)
FUSION_USER.FUSION_KEY_LIST(1600481496,N)
FUSION_USER.FUSION_KEY_LIST(1600473344,N)
select * from fusion_queue_audit where xml_message_type = 560 and create_date > (sysdate - 8/24) and INSTR(key_list,'1600103836') > 0;
OR
select * from fusion_queue_audit where xml_message_type = 560 and create_date > (sysdate - 8/24) and key_list like '%1600103836%';
预先感谢 R
解决方法
您可以将table
应用于集合,以访问和过滤其内容,例如
select * from fusion_queue_audit
where xml_message_type = 560
and create_date > (sysdate - 8/24)
and exists (
select 1 from table(key_list) t1
where t1.column_value like '%1600103836%'
);
检查fiddle上的测试示例
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。