sql - 如何从 VARRAY 中检索数据并对其进行过滤
问题描述
例如,我必须从 Varray 中检索特定数据
CREATE OR REPLACE TYPE class_t IS VARRAY(9) OF VARCHAR(5);/
create table exprement(name VARCHAR2(20), seat class_t);
insert into exprement(name,seat) values('JPZ',class_t('AC1','EC'));
insert into exprement(name,seat) values('ABC',class_t('GEN','EC'));
insert into exprement(name,seat) values('DFG',class_t('AC1','EC'));
我想检索我尝试过的 VARRAY 包含 AC1 的名称select * from exprement where seat='AC1';
解决方案
您可以使用:
SELECT name
FROM experiment e
WHERE EXISTS (SELECT 1 FROM TABLE(e.seat) WHERE COLUMN_VALUE = 'AC1');
或者
SELECT name
FROM experiment e
CROSS APPLY TABLE (e.seat) s
WHERE s.COLUMN_VALUE = 'AC1';
顺便说一句,如果您定义seat
为嵌套表(而不是 a VARRAY
),那么您可以使用MEMBER OF
运算符:
SELECT *
FROM experiment
WHERE 'AC1' MEMBER OF seat;
但这不适用于VARRAY
s 或关联数组。
db<>在这里摆弄
推荐阅读
- java - Jsoup获取href的内容
- assembly - x86 汇编 - 错误 A2022:指令操作数必须相同大小
- azure-data-factory - 更改数据类型 - Azure 数据工厂的数据流
- c - 如何在 C 中实现 futimens 函数以更改文件上的时间戳
- spring - 使用 r2dbc 设置集成测试
- python - 基于字符串数据类型的预测
- javascript - 如何在这个(非常低效的)代码中修复穿墙故障
- sql-server - 使用 SSMS 时 SQL 还原失败并出现错误
- c - 如何使用指针算法指向链表结构的下一个元素?
- javascript - React-redux - 嵌套连接组件