SDO テーブルに曲線または円弧が含まれているかどうかを教えてくれる Oracle SQL クエリの作成に苦労しています。必要な情報が sdo_elem_info に含まれていることはわかっていますが、SQL を使用して etype と解釈を sdo_elem_info から分離する方法がわかりません。
これまでのところ、私が持っているのは、 my_table tbl から tbl.shape.sdo_elem_info を選択することだけです
SDO テーブルに曲線または円弧が含まれているかどうかを教えてくれる Oracle SQL クエリの作成に苦労しています。必要な情報が sdo_elem_info に含まれていることはわかっていますが、SQL を使用して etype と解釈を sdo_elem_info から分離する方法がわかりません。
これまでのところ、私が持っているのは、 my_table tbl から tbl.shape.sdo_elem_info を選択することだけです
TABLE 関数を使用して sdo_elem_info_array 要素を抽出し、それをピボットして結果の行を集計して、要素ごとに行を生成し、オフセット、etype、および解釈用の列を作成できます。
このようなものでクエリが得られるはずです...(警告:テストされていません)
WITH elem_info AS (
SELECT
TRUNC((ROWNUM - 1) / 3, 0) element_no
, MAX(DECODE(MOD(ROWNUM, 3), 1, t.COLUMN_VALUE, NULL)) offset
, MAX(DECODE(MOD(ROWNUM, 3), 2, t.COLUMN_VALUE, NULL)) etype
, MAX(DECODE(MOD(ROWNUM, 3), 0, t.COLUMN_VALUE, NULL)) interpretation
FROM my_table tbl
, TABLE(tbl.shape.sdo_elem_info) t
GROUP BY TRUNC((ROWNUM - 1) / 3, 0)
)
SELECT DECODE(COUNT(*), 0, 'false', 'true')
FROM elem_info ei
WHERE ei.etype IN (1005, 2005)
OR ei.interpretation IN (2, 4)