这是一个关于数组的初级问题。我希望答案是简单的。这个例子来自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等的知识。但是如何在两个数组上定义一个子句?
谢谢你的帮助
试试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);