TGViewer
дата инженеретта дата инженеретта @data_engineerette · 3.43K subscribers
Post #519 1.78K
Advent of SQL. Day 9

🗓️ День 9: нужно вытащить из вложенного json нужные поля. Я так и не могу запомнить, как правильно это делается в постгре, поэтому делала по интуиции) Заодно познакомилась с новыми функциями

Как получилось у меня:


select
order_data['gift']['wrapped']::boolean as gift_wrapped,
trim(both '"' from order_data['risk']['flag']::text) as risk_flag
from orders


Я сделала в питонячем виде, и это сработало👍 Сначало было просто order_data['risk']['flag'], но мне не понравились лишние кавычки:


risk_flag
----------
"high"
"medium"


Перепроверила типы данных через pg_typeof. В первом случае тип столбца jsonb, а во втором - text:


select
pg_typeof(order_data['risk']['flag']) as risk_flag,
pg_typeof(order_data['risk']['flag']::text) as risk_flag2
from orders


Я кастанула, но кавычки не ушли. Пошла гуглить, наверняка есть хитрый trim без substring/replace. И такой есть! Вот эта прикольная конструкция позволяет нам удалять символы с разных сторон, общий синтаксис такой:

TRIM([LEADING | TRAILING | BOTH] trim_character
FROM source_string)


У спикера же получилось более канонично 🙂


select
(order_data -> 'gift' ->> 'wrapped')::boolean as gift_wrapped,
order_data -> 'risk' ->> 'flag' as risk_flag
from orders


-> достает по ключу json
->> достает по ключу строку


📍 Advent of SQL (с впн)
📍 SQL Advent Calendar (с впн)
📍 Мои решения

@data_engineerette
  • ❤ 5
  • 🔥 3
More from @data_engineerette
  1. Sep 25, 2026Как прошла SmartData 2026? Я вот перечитываю свои впечатления от прошлого года и понимаю,…
  2. Sep 24, 2026Исследование data-people Тут ребята из DevCrowd запустили ежегодное исследование специалис…
  3. Sep 22, 20265 октября начнется 19-й поток программы Data Engineer от Newprolab Программа для junior- и…
  4. Sep 15, 2026Каким должен быть хороший DE? Меня однажды спросили на собесе: 🤩Какие 3 качества важны дл…
  5. Sep 12, 2026Mermaid-диаграммы Наконец-то дошли руки поковыряться в mermaid-диаграммах, это что за имба…
  6. Sep 2, 2026Iceberg — это внезапный бум или планомерная подготовка? Заметили, как с определенного моме…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →