获取postgresql中hstore数据的每行键数

时间:2013-09-12 13:26:03

标签: sql postgresql hstore

我的postgresql数据库中有一个hstore列。数据库的每一行在hstore-column中具有不同数量的键/值。如何获得每行的键/值数量?

2 个答案:

答案 0 :(得分:6)

select hstore_column, 
       array_length(akeys(hstore_column), 1) as num_keys
from the_table

答案 1 :(得分:2)

您可以使用hstore functions之一将hstore转换为可以检索元素数量的其他数据类型。例如,您可以使用avalue来计算hstore值上的键数:

SELECT id, array_length(avals(my_hstore_field), 1) AS count_keys
FROM mytable;

在文档上有一个很好的例子来获取可能对你有用的所有键及其出现次数:

SELECT key, count(*) FROM
  (SELECT (each(h)).key FROM testhstore) AS stat
  GROUP BY key
  ORDER BY count DESC, key;