Postgres SQL сопоставляет большой двоичный объект JSON для записи, когда поля содержат специальные операторы PSQL (например, , -)

#json #postgresql

#json #postgresql

Вопрос:

в одной из наших таблиц БД есть поле большого двоичного объекта JSON, содержащее ключи со специальными операторами PSQl, такими как » » и «-«. (Например, «threshold-10», «threshold-5», «threshold 0», «threshold 5»)

По какой-то причине следующий запрос, похоже, не может правильно проанализировать большие двоичные объекты json (возвращает пустые значения для указанных полей) Я попытался обновить запрос, используя кавычки, но все еще возникли проблемы с использованием функции jsonb_to_record .

Например

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

 SELECT * FROM jsonb_to_record(
       SELECT json_blob_column FROM my_table WHERE type = 'data_type'
) AS x (threshold-10 float, threshold-5, threshold 0, threshold 5)
  

Я также безуспешно пытался заключить поля в кавычки: синтаксическая ошибка исчезает, но затем я остаюсь с кучей пустых столбцов, означающих, что это «пороговое поле» не может быть найдено в больших двоичных объектах JSON.

 SELECT * FROM jsonb_to_record(
       SELECT json_blob_column FROM my_table WHERE type = 'data_type'
) AS x ("threshold-10" float, "threshold-5" float, "threshold 0" float, "threshold 5" float)
  

Теперь я в растерянности. Действительно рассматривая поля JSON как «threshold_minus_5», «threshold_plus_five», чтобы вообще избежать символов ‘ ‘ и ‘-‘.

Любые предложения будут высоко оценены. Заранее спасибо.

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

1. Пожалуйста, добавьте некоторые примеры данных и желаемый результат. Что касается поведения as, то это очевидное поведение, потому что двойные кавычки позволят - ввести имя поля, но вы не предоставляете данные and для этих полей в своем подзапросе