代码之家  ›  专栏  ›  技术社区  ›  David542

如何在SQL中编写数组文字?

  •  0
  • David542  · 技术社区  · 3 年前

    是否可以在Oracle中使用数组文字,例如:

    SELECT [1,2,3] FROM dual
    # [1,2,3] -- int[]
    

    SELECT ([1,2,3])[0] FROM dual
    # 1 -- int
    

    或者,最简单的方法是什么(即,不可能在PL/SQL中?)?

    1 回复  |  直到 3 年前
        1
  •  1
  •   nbk    3 年前

    如果你想要一个灵活的列表,你可以使用这样的类型

    create type t_inttable as table of int
    /
    
    create table tab_mydata (
      id         number(10),
      intlist   t_inttable
    )
    nested table intlist store as ntab_intlist
    
    insert into tab_mydata values(
      1, 
      t_inttable(1,2,3)
    )
    /
    
    select * from tab_mydata
    /
    
    ID | INTLIST
    -: | :------
    
    select t.id, x.column_value from tab_mydata t, table(intlist) x
    /
    
    ID | COLUMN_VALUE
    -: | -----------:
     1 |            1
     1 |            2
     1 |            3
    
    select t.id, x.column_value from tab_mydata t, table(intlist) x
    where x.column_value like 3
    /
    
    ID | COLUMN_VALUE
    -: | -----------:
     1 |            3
    

    db<>不停摆弄 here