sql >> Databasteknik >  >> RDS >> Oracle

Jämför lista med värden mot tabell

det finns många inbyggda offentliga samlingstyper. du kan använda en av dem så här:

with ids as (select /*+ cardinality(a, 1) */ column_value id
               from table(UTL_NLA_ARRAY_INT(100, 200, 300)) a
            )
select ids.id, case when m.id is null then '**NO MATCH**' else m.value end value
  from ids
         left outer join my_table m
                     on m.id = ids.id;

för att se en lista över publika typer på din DB, kör :

select owner, type_name, coll_type, elem_type_name, upper_bound, precision, scale from all_coll_types
 where elem_type_name in ('FLOAT', 'INTEGER', 'NUMBER', 'DOUBLE PRECISION')

tipset

/*+ cardinality(a, 1) */

används bara för att tala om för oracle hur många element som finns i vår array (om det inte anges, kommer standarden att vara ett antagande om 8k element). ställ bara in på ett någorlunda korrekt nummer.



  1. GORM skapa en post som kanske redan finns

  2. Beräkna skillnaden mellan datum i Postgresql

  3. SQL:hur man använder UNION och beställer efter ett specifikt urval?

  4. Kan jag använda multithreading med Perls DBI och Oracle?