SQL-запрос, чтобы определить, содержит ли Oracle Spatial таблицы из кривых

StackOverflow https://stackoverflow.com/questions/3971693

  •  09-10-2019
  •  | 
  •  

Вопрос

Я изо всех сил пытался создать запрос Oracle SQL, который скажет мне, если моя таблица SDO содержит кривые или дуги. Я знаю, что SDO_ELEM_INFO содержит необходимую информацию, но я не знаю, как использовать SQL, чтобы отделить этап и интерпретацию от SDO_ELEM_INFO.

Пока что у меня есть: выберите tbl.shape.sdo_elem_info из my_table tbl

Это было полезно?

Решение

Вы можете использовать функцию таблицы для извлечения элементов SDO_ELEM_INFO_ARRAY, затем сводить в то, что и совокупные результирующие строки дают строку на элемент с столбцом для смещения, этапа и интерпретации.

Что-то вроде этого должно дать вам ваш запрос ... (Предупреждение: непроверенный)

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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top