1 回答
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
TA贡献1808条经验 获得超4个赞
使用 Oracle,您可以使用NESTED TABLE
s(或VARRAY
s)将数组存储在列中:
Oracle 11g R2 架构设置:
CREATE TYPE String_Table IS TABLE OF VARCHAR2(100)
/
CREATE TABLE test (
id NUMBER(10,0),
col1 VARCHAR2(10),
array1 String_Table
) NESTED TABLE array1 STORE AS test__array1
/
INSERT INTO test ( id, col1, array1 )
SELECT 1, 'Row1', String_Table( 'A', 'B', 'C' ) FROM DUAL UNION ALL
SELECT 2, 'Row2', String_Table( 'C', 'D', 'E' ) FROM DUAL
/
查询 1:然后您可以使用集合操作,例如:MEMBER OF在集合中查找项目;和MULTISET运算符喜欢SUBMULTISET OF查找包含另一个集合的所有项目的集合。
SELECT *
FROM test
WHERE 'B' MEMBER OF array1
OR String_Table( 'E', 'C' ) SUBMULTISET OF array1
结果:
| ID | COL1 | ARRAY1 |
|----|------|--------|
| 1 | Row1 | A,B,C |
| 2 | Row2 | C,D,E |
如果您使用的是 Java,那么您可以将 Java 数组作为 aPreparedStatement或 的绑定参数传递CallableStatement。这方面的一些例子是here和here。
添加回答
举报