SQL ARRAY: Select ID from my_table where "arrayvalue" = "defined_arrayvalue"

问题描述 投票:0回答:1

这是一个关于数组的初级问题。我希望答案是简单的。这个例子来自Oracle Spatial,但我认为它对所有数组都有效。

我有这个SELECT。

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)

现在我想SELECT所有定义为(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 = 1,2,1"。"array_from_row = defined_array". 我找到了很多关于IMPLODE和TABLE以及COLLECT等的知识。但是如何在两个数组上定义一个子句?

谢谢你的帮助

sql arrays oracle select spatial
1个回答
0
投票

试试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);
© www.soinside.com 2019 - 2024. All rights reserved.