first-programmer
@first-programmer
Backend software engineer

Как составить аналогичный запрос, если поле text, а не json?

Можно ли написать такой же запрос, если поле raw не jsonb, а text?

SELECT
tp."raw"->>'errorCode' AS error_code,
count(tp."raw"->>'errorCode') AS "count"
FROM transaction_payment tp
WHERE (tp.date_created BETWEEN '2022-03-21 00:00:00' AND '2022-03-27 23:59:59')
AND tp."raw" IS NOT NULL
AND tp."source" = 'mts-bpc'
GROUP BY tp."raw"->>'errorCode'
ORDER BY "count" DESC;

В архитектуре ошибка есть, запрос нужен для разовой статистики, поэтому переписывать сейчас на крайняк только, так как надо анализировать логику связанную с этими данными. Может кто из гуру подскажет вариант?
  • Вопрос задан
  • 47 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
SELECT ('{"data": "test", "count": 8}'::json->>'count')::int + 2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Можно ли написать такой же запрос, если поле raw не jsonb, а text?

Ну офигеть проблема - заменить tp."raw"->>'errorCode' на tp."raw"::JSONB->>'errorCode'

Кстати, это применимо к полю обоих типов. Просто для JSON - избыточно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы