2016-06-30 3 views
1

У меня есть столбец типа JSON с именем «log_data», а хранящиеся в нем данные находятся в формате [{"key":"test123123","identity":"[email protected]","identity_type":"email"}].PostgreSQL - подсчет элементов в JSON

Я хочу, чтобы подсчитать, сколько записей для заданного значения для данного ключа в формате JSON:

Не работает

SELECT count (distinct esas_logs.log_id) AS "count" FROM "esas_logs" WHERE log_data->0->>'identity' = '[email protected]' 

[2016-06-30 13:59:18] [42883] ERROR: operator does not exist: json = unknown 
    HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. 
+0

Какой тип 'столбца esas_logs.log_id'? – Abelisto

ответ

1

использование json_array_length()

test=# select json_array_length('[{"key":"test123123","identity":"[email protected]","identity_type":"email"}]'); 
    json_array_length 
------------------- 
      1 
(1 row) 
0

По doc, вы должны использовать оператор ?.

Если тип столбца в формате JSON:

SELECT COUNT(esas_logs ? 'log_id') FROM esas_logs WHERE ... 

Если столбец является TEXT или VARCHAR:

SELECT COUNT(esas_logs::jsonb ? 'log_id') FROM esas_logs WHERE ... 
Смежные вопросы