sql >> Database teknologi >  >> RDS >> Oracle

Lagring af søgbare arrays i et SQL-databasefelt

Med Oracle kan du gemme arrays i en kolonne ved hjælp af NESTED TABLE s (eller VARRAY s):

SQL Fiddle

Oracle 11g R2 Schema Setup :

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
/
 

Forespørgsel 1 :Så kan du bruge indsamlingsoperationer såsom:MEMBER OF at finde genstande i en samling; og MULTISET operatorer som SUBMULTISET OF for at finde samlinger, der indeholder alle genstande fra en anden samling.

SELECT *
FROM   test
WHERE  'B' MEMBER OF array1
OR     String_Table( 'E', 'C' ) SUBMULTISET OF array1
 

Resultater :

| ID | COL1 | ARRAY1 | |----|------|--------| | 1 | Row1 | A,B,C | | 2 | Row2 | C,D,E |

Hvis du bruger Java, kan du sende Java-arrays som bindeparametre for en PreparedStatement eller CallableStatement . Nogle eksempler på dette er her og her .




  1. Hvad refererer ikke til i denne SQL?

  2. pymysql callproc() ser ud til at påvirke efterfølgende valg

  3. TO_DATE-problem med Oracle DBMS_SQL.EXECUTE-funktionen

  4. Sådan castes DateTime til Time