"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"