【问题标题】:SQL ARRAY: Select ID from my_table where "arrayvalue" = "defined_arrayvalue"SQL ARRAY:从 my_table 中选择 ID,其中“arrayvalue”=“defined_arrayvalue”
【发布时间】:2020-09-29 14:16:57
【问题描述】:

这是一个与数组相关的初学者问题。我希望答案很简单。 该示例取自 Oracle Spatial,但我认为它适用于所有数组。

我有这个选择:

SELECT
    D.FID
  , D.GEOM.SDO_ELEM_INFO   -- column GEOM contains spatial data
FROM
    my_table D  

我得到这个结果:

73035   MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1)
73036   MDSYS.SDO_ELEM_INFO_ARRAY(1, 4, 3, 1, 2, 1, 11, 2, 2, 19, 2, 1)
73037   MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1)

现在我想选择所有定义了 (1,2,1) 的行:

SELECT
    D.FID
  , D.GEOM.SDO_ELEM_INFO
FROM
    my_table D
WHERE
-- Pseudo-Code is following
    D.GEOM.SDO_ELEM_INFO is "(1, 2, 1)";

所以,简单来说:“array_from_row = defined_array”。 我发现了很多关于 IMPLODE 和 TABLE 和 COLLECT 等。但是如何在两个数组上定义一个子句?

感谢您的帮助!

【问题讨论】:

    标签: sql arrays oracle select spatial


    【解决方案1】:

    试试IN子句,也可以同时使用

    SELECT
        D.FID
      , D.GEOM.SDO_ELEM_INFO
      FROM
     my_table D
     WHERE
     D.GEOM.SDO_ELEM_INFO in (1, 2, 1) or ( D.GEOM.SDO_ELEM_INFO = 1 or D.GEOM.SDO_ELEM_INFO = 2 or D.GEOM.SDO_ELEM_INFO = 3);
    

    【讨论】:

    • 谢谢,但我不工作:ORA-00932: inconsistent datatypes: expected NUMBER got MDSYS.SDO_ELEM_INFO_ARRAY 00932. 00000 - "inconsistent datatypes: expected %s got %s"
    • 删除查询中的单引号。已编辑答案,请使用
    • ORA-00932: inconsistent datatypes: expected MDSYS.SDO_ELEM_INFO_ARRAY got NUMBER 00932. 00000 - "inconsistent datatypes: expected %s got %s"
    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多