sql >> Database >  >> RDS >> Oracle

Doorzoekbare arrays opslaan in een SQL-databaseveld

Met Oracle kunt u arrays in een kolom opslaan met behulp van NESTED TABLE s (of VARRAY s):

SQL Fiddle

Oracle 11g R2 Schema-instellingen :

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
/

Query 1 :Dan kunt u incassobewerkingen gebruiken zoals:MEMBER OF om items in een verzameling te vinden; en MULTISET operators zoals SUBMULTISET OF om collecties te vinden die alle items van een andere collectie bevatten.

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

Resultaten :

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

Als u Java gebruikt, kunt u Java-arrays doorgeven als bindparameters van een PreparedStatement of CallableStatement . Enkele voorbeelden hiervan zijn hier en hier .




  1. Mogelijke retourwaarden voor mysql_affected_rows()

  2. Hoe stel je de schemanaam in voor reeksen tijdens de implementatie bij gebruik van JPA?

  3. Hoe te verwijzen naar een samengestelde primaire sleutel in SQL

  4. pip installeer mysqlclient op amazon linux