PostgreSQL将任意数组转换为int类型的数组



我正在尝试使用pg_stats关系来了解PostgreSQL如何进行查询评估的更多信息。

我尝试在此处关注此页面:https://www.postgresql.org/docs/10/row-estimation-examples.html以计算我的查询的一些选择性。

当使用从获得的histogram_bounds

SELECT histogram_bounds 
FROM pg_stats 
WHERE tablename='<table_name>' 
AND attname='<att_name>';

这里的att_name是表table_name中的数字类型的属性

返回值的类型是anyarray,尽管(在我的情况下(属性是一个整数,所以它是一个充满整数的anyarray。我发现关于这种类型的文档很少,但似乎无法使用简单的强制转换约定将其转换为可用类型。显然,它不支持普通数组选项。我想把它转换成一个int数组。

histogram_bounds[0]

错误:不能下标任何数组,因为它不是数组

并且不能强制转换

CAST(histogram_bounds as int[])

错误:无法将类型anyarray强制转换为integer[]

如有任何关于如何将此类型强制转换为int数组的帮助,我们将不胜感激。

我认为您可以将任何类型,甚至是anyarray类型,强制转换为text进行输出。该文本将具有整数列直方图的整数数组表示,因此我们可以随后将其转换为:

SELECT histogram_bounds::text::int[]
FROM pg_stats
WHERE tablename='<table_name>'
AND attname='<att_name>';

最新更新