В моей таблице у меня есть столбец с именем facebook как тип текста []. Например, одна строка:
{{total_count,26861},{comment_count,94},{comment_plugin_count,0},{share_count,26631},{reaction_count,136}}
Сейчас я пытаюсь выбрать только total_count. Я пытался все и закончил этим:
SELECT json_each(to_json(facebook))->>'total_count' AS total_count"
Но я получаю ошибку:
оператор не существует: запись — >> неизвестно \ nLINE 1:
Есть идеи?
//редактировать
Теперь у меня есть это
$select = "WITH fejs AS ( select json_array_elements(to_json(facebook)) e FROM $table ), arr AS ( select e->1 as total_count FROM fejs WHERE e->>0 = 'total_count') SELECT ".implode(", ", SSP::pluckas($columns)).", count(*) OVER() AS full_count
FROM $table
$where
$order
$limit";
Есть ли способ добавить total_count в ORDER?
у вас есть массив текстовых массивов в атрибуте facebook, поэтому to_json также преобразует его в многомерный массив, поэтому вам нужно работать с массивами, например:
t=# with t(facebook) as (values('{{total_count,26861},{comment_count,94},{comment_plugin_count,0},{share_count,26631},{reaction_count,136}}'::text[]))
, arr as (select json_array_elements(to_json(facebook)) e from t)
select e->1 as total_count from arr where e->>0 = 'total_count';
total_count
-------------
"26861"(1 row)
Других решений пока нет …