powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выбрать данные из JSON
5 сообщений из 5, страница 1 из 1
Выбрать данные из JSON
    #39361077
lynatik50
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Подскажите пожалуйста как выбрать данные из JSON - нужно выбрать значение BasePrice для Country = Беларусь, пробую так (таблица shipping_documents json лежит, как текст в поле rail_tariff), не понимаю как ему указать на конкретное значение:

Код: sql
1.
 select (json_extract_path_text(rail_tariff,'result','Result','BasePrice')) as base_price from (select ID, CAST(rail_tariff as json) from shipping_documents) as t1 



структура JSON:

{
"result": {
"Result": [{
"BasePrice": 56037,
"Country": "Россия",
},
{
"BasePrice": 2055.9300000000003,
"Country": "Беларусь"
},
{
"BasePrice": 1730.87,
"Country": "Литва"
}],
"ValueLitva": 1778.78,
}
}
...
Рейтинг: 0 / 0
Выбрать данные из JSON
    #39361121
pg_role
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
select j->>'Country', j->>'BasePrice'
from json_array_elements((('{
  "result": {
    "Result": [
      {
        "BasePrice": 56037,
        "Country": "Россия"
      },
      {
        "BasePrice": 2055.9300000000003,
        "Country": "Беларусь"
      },
      {
        "BasePrice": 1730.87,
        "Country": "Литва"
      }
    ],
  "ValueLitva": 1778.78
  }
}'::json->>'result')::json->>'Result')::json) j

where j->>'Country' = 'Беларусь';
...
Рейтинг: 0 / 0
Выбрать данные из JSON
    #39361130
lynatik50
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pg_role,

спасибо
...
Рейтинг: 0 / 0
Выбрать данные из JSON
    #39361131
Alex__kK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lynatik50,

если в лоб:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
select pr -> 'BasePrice'
from (
       select json_array_elements(('{
"result": {
"Result": [
{
"BasePrice": 56037,
"Country": "Россия"
},
{
"BasePrice": 2055.9300000000003,
"Country": "Беларусь"
},
{
"BasePrice": 1730.87,
"Country": "Литва"
}],
"ValueLitva": 1778.78
}
}'::json #> '{result,Result}')::json) pr
     ) as subq1
where pr ->> 'Country' = 'Беларусь'
...
Рейтинг: 0 / 0
Выбрать данные из JSON
    #39361199
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lynatik50, для справки что бы знали, это не единственный способ-)
если очень много данных быстрее работает расширение jsquery для jsonb (с учетом gin индекса)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Выбрать данные из JSON
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]