#json #postgresql
Вопрос:
Я получаю эту ошибку
ОШИБКА: оператор не существует: текст ->>> неизвестно
Когда я бегу
SELECT ARRAY_AGG(data->>'promotion_data' || '-' || data->>'id')
FROM data.persons
GROUP BY data->>'store_id'
но это работает
SELECT ARRAY_AGG(data->>'promotion_data' || '-')
FROM data.persons
GROUP BY data->>'store_id'
Я пытался привести к json, но все та же ошибка:
SELECT ARRAY_AGG(data->>'promotion_data' || '-' || data::json->>'id')
FROM data.persons
GROUP BY data->>'store_id'
Комментарии:
1. Что это за версия PostgreSQL?
2. Решается с помощью a_horse_with_no_name
Ответ №1:
Используйте круглые скобки:
ARRAY_AGG((data->>'promotion_data') || '-' || (data->>'id'))
||
Похоже, у него более высокий приоритет, чем у ->>
оператора.
В качестве альтернативы вы можете использовать concat_ws()
ARRAY_AGG(concat_ws(',', data->>'promotion_data', data->>'id'))
Комментарии:
1. Странно — приоритет
->>
||
перед всеми версиями, которые у меня здесь есть (9.4 и выше).