Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana menemukan apakah suatu nilai ada dalam VARRAY

Anda perlu mengekspos tabel bersarang dalam klausa FROM menggunakan table() fungsi. Anda kemudian dapat mereferensikan atribut koleksi:

SQL> select g.title
  2  from game_table g
  3       , table(g.gametheme) gt
  4  where gt.theme = 'Action';

TITLE
--------------------------------------------------
Star Wars

SQL> 

"bagaimana jika saya kemudian perlu mengambil baris dengan beberapa Tema yaitu Aksi, FPS?"

Maaf untuk solusi kikuk tapi saya harus pergi bekerja sekarang. Saya dapat memposting solusi yang lebih elegan nanti.

SQL> select * from game_table
  2  /

TITLE
--------------------------------------------------
GAMETHEME(THEME)
--------------------------------------------------------------------------------
Star Wars
THEME_TYPE(THEME_GAME('Action'), THEME_GAME('FPS'))

Uncharted 3
THEME_TYPE(THEME_GAME('Action'), THEME_GAME('Puzzle'))

Commander Cody
THEME_TYPE(THEME_GAME('Fun'), THEME_GAME('Puzzle'))


SQL> select g.title
  2  from game_table g
  3       , table(g.gametheme) gt
  4       , table(g.gametheme) gt1
  5  where gt.theme = 'Action'
  6  and gt1.theme = 'FPS' ;

TITLE
--------------------------------------------------
Star Wars

SQL> 

Pendekatan alternatif ini tidak akan bekerja dengan tipe Anda saat ini karena VARRAY tidak mendukung member of . Tapi itu akan berhasil jika koleksinya adalah Tabel Bersarang.

 select g.title
  from game_table g
  where  'Action' member of g.gametheme
  and 'FPS' member of g.gametheme


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mereferensikan tipe yang ditentukan pengguna Oracle melalui DBLINK?

  2. Oracle 11g - Tanpa Pivot

  3. Konversi Unixtime ke Datetime SQL (Oracle)

  4. Dapatkan hasil teratas untuk setiap grup (di Oracle)

  5. Langkah demi Langkah R12.2.6 Instalasi EBS di Virtual Box