Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách tìm xem một giá trị có tồn tại trong một VARRAY hay không

Bạn cần hiển thị bảng lồng nhau trong mệnh đề FROM bằng cách sử dụng table() hàm số. Sau đó, bạn có thể tham chiếu các thuộc tính của bộ sưu tập:

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

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

SQL> 

"nếu sau đó tôi cần truy xuất các hàng có nhiều Chủ đề, tức là Hành động, FPS thì sao?"

Xin lỗi vì giải pháp lặt vặt nhưng tôi cần phải đi làm ngay. Tôi có thể đăng một giải pháp tốt hơn sau.

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> 

Phương pháp thay thế này sẽ không hoạt động với loại hiện tại của bạn vì VARRAY không hỗ trợ thành viên member of . Nhưng nó sẽ hoạt động nếu bộ sưu tập là một Bảng lồng nhau.

 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. Chèn Oracle nếu hàng không tồn tại

  2. Truy vấn Oracle để tìm nạp tên cột

  3. Làm thế nào để lấy các bản ghi ngẫu nhiên từ cơ sở dữ liệu oracle?

  4. Hibernate> CLOB> Oracle :(

  5. Hàm MOD () trong Oracle