ОРАКУЛ: В моей таблице «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
@Pankaj Это не сработало
Он должен вернуть вам значение каждого симптома. Вы получаете ошибку или ноль?
Вместо r.details.repairactions[0].symptom я использовал r.details.repairActions[0].symptom, и это, похоже, сработало.
:) да я упустил случай.
Вы хотите поместить индекс массива в правильное место и использовать идентификаторы в кавычках, которые соответствуют регистру 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"
}
]
}');
Выходы:
SYMPTOM1 SYMPTOM2 SYMPTOM3 524 506 509
дб <> рабочий пример здесь
Просто переместите [0] на действие восстановления. например r.details.repairactions[0].симптом