sql >> データベース >  >> RDS >> Oracle

VARRAY内に値が存在するかどうかを確認する方法

    table()を使用して、FROM句でネストされたテーブルを公開する必要があります 働き。その後、コレクションの属性を参照できます。

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

    「その後、アクション、FPSなどの複数のテーマを持つ行を取得する必要がある場合はどうなりますか?」

    不格好な解決策についてお詫びしますが、私は今仕事に行く必要があります。後でもっとエレガントな解決策を投稿するかもしれません。

    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> 
    

    VARRAYはmember ofをサポートしていないため、この代替アプローチは現在のタイプでは機能しません。 。ただし、コレクションがネストされたテーブルであれば機能します。

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


    1. cx oracle ImportError

    2. MicrosoftAccessからのSalesforceの一括挿入

    3. 列の値をコンマ区切りのリストに連結する

    4. MariaDB10.4の新機能