Как извлечь значение из JSON в Presto?

#sql #json #presto #trino

#sql #json #presto #trino

Вопрос:

{«xyz»:{«aaabc»:»80.00″,»ccccd»: null, «npccc»:»0.00″, «txnid»: «pca», «diccsc»:»0.00″}}

Я должен извлечь xyz, где xyz — динамическая переменная (в некоторых случаях это может быть xyz, в других это может быть abc или что-то еще)

Комментарии:

1. поскольку вы не можете использовать имя переменной. Как это определяется? По некоторому регулярному выражению или по индексу (являющемуся только строкой)?

2. Вы можете попробовать объединение строк от вторых фигурных скобок до предпоследних фигурных скобок.

Ответ №1:

Предполагая, что ваши данные являются a varchar , вы можете

  • преобразовать в json
  • приведение к map(varchar, json)
  • извлекать записи из карты с помощью map_entries
  • получить первое
 SELECT map_entries(CAST(CAST(my_column AS json) AS map(varchar, json))[1]
FROM ...