Запрос поля данных JSON из таблицы Oracle

ОРАКУЛ: В моей таблице «TESTREPAIR» есть поле, в котором в одном столбце «ДЕТАЛИ» хранится следующий JSON.

{
    "repairActions": [
        {
            "symptom": 524,
            "defect": "Defective Component",
            "action": "Reflow"
        },
        {
            "symptom": 506,
            "defect": "Cosmetic",
            "action": "Repaired Component"
        },
        {
            "symptom": 509,
            "defect": "Defective Component",
            "action": "Swapped"
        }
    ]
}

Я использую оператор SELECT, чтобы просто запросить симптомы из приведенного выше поля данных JSON.

Как это.

SELECT
    r.details.repairactions.symptom[0],
    r.details.repairactions.symptom[1],
    r.details.repairactions.symptom[2]
FROM
    testrepair r;

Приведенный выше запрос возвращает значение null. Мой желаемый результат

symptom1: 524
symptom2: 506
symptom3: 509

Просто переместите [0] на действие восстановления. например r.details.repairactions[0].симптом

Pankaj 16.05.2022 21:36

@Pankaj Это не сработало

Anup Deuja 16.05.2022 22:52

Он должен вернуть вам значение каждого симптома. Вы получаете ошибку или ноль?

Pankaj 16.05.2022 22:58

Вместо r.details.repairactions[0].symptom я использовал r.details.repairActions[0].symptom, и это, похоже, сработало.

Anup Deuja 17.05.2022 02:36

:) да я упустил случай.

Pankaj 17.05.2022 02:45
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
5
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы хотите поместить индекс массива в правильное место и использовать идентификаторы в кавычках, которые соответствуют регистру JSON:

SELECT r.details."repairActions"[0]."symptom" AS symptom1,
       r.details."repairActions"[1]."symptom" AS symptom2,
       r.details."repairActions"[2]."symptom" AS symptom3
FROM   testrepair r;

Что для примера данных:

CREATE TABLE testrepair (details JSON);

INSERT INTO testrepair (details)
VALUES ('{
    "repairActions": [
        {
            "symptom": 524,
            "defect": "Defective Component",
            "action": "Reflow"
        },
        {
            "symptom": 506,
            "defect": "Cosmetic",
            "action": "Repaired Component"
        },
        {
            "symptom": 509,
            "defect": "Defective Component",
            "action": "Swapped"
        }
    ]
}');

Выходы:

SYMPTOM1SYMPTOM2SYMPTOM3
524506509

дб <> рабочий пример здесь

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