Преобразование VARRAY в текст (для конкатенации)

У меня есть запрос, который выводит VARRAY:

select
    a.sdo_geom.sdo_elem_info
from
    (
    select
        sdo_geometry('LINESTRING (1 2,3 4)') as sdo_geom
    from
        dual
    ) a

В SQL Developer VARRAY выводится как текст:

Преобразование VARRAY в текст (для конкатенации)


Вопрос:

Аналогично тому, что делает SQL Developer, есть ли способ преобразовать VARRAY в текст с помощью SQL, чтобы я мог конкатенировать значение в строке?

Пример: (не получается)

select
    'MDSYS.SDO_ELEM_INFO_ARRAY(' || a.sdo_geom.sdo_elem_info || ')'
from
    (
    select
      sdo_geometry('LINESTRING (1 2,3 4)') as sdo_geom
    from
      dual
    ) a

[Desired result: 'MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1)']

ORA-00932: inconsistent datatypes: expected CHAR got MDSYS.SDO_ELEM_INFO_ARRAY
00932. 00000 -  "inconsistent datatypes: expected %s got %s"
*Cause:    
*Action:
Error at Line: 2 Column: 37

Просто голова вверх:

DB<>FIDDLE, похоже, неправильно выводит VARRAYS. Он выводит пустой набор результатов, что может сбивать с толку. Возвращает значение/строку при выборе SDO_GEOMETRY

Здесь также мне любопытно узнать о фактической потребности бизнеса в этом.

Albert Godfrind 04.05.2022 19:32
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
35
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать listagg в подзапросе:

DBFiddle: https://dbfiddle.uk/?rdbms=oracle_21&fiddle=fa79482bb22501fd67fb2c498ff90bf9

select
    (select listagg(column_value,',') from table(a.sdo_geom.sdo_elem_info)) cc
from
    (
    select
        sdo_geometry('LINESTRING (1 2,3 4)') as sdo_geom
    from
        dual
    ) a

Чар Кол... :-D

Sayan Malakshinov 04.05.2022 03:25

Для моих заметок, для других атрибутов объекта SDO_GEOMETRY, таких как .sdo_ordinates, мне нужно выяснить, правильно ли упорядочены ординаты или нет: "Я не уверен, что ваш упрощенный запрос сохраняет порядок ординат. Чтобы быть в безопасности, я бы определенно использовал предложение ORDER BY LISTAGG."

User1974 04.05.2022 16:47

Другие вопросы по теме