当我运行一个查询时,当我将一个整数数组作为第二个参数传递给width_bucket时,我期望得到如下结果:
select width_bucket(5, array[0, 1, 2, 3, 4, 5, 6, 7, 8] )但是,如果这个数组包含一个十进制数,如下所示:
select width_bucket( 5, array[0, 1.1, 2, 3, 4, 5, 6, 7, 8] )我知道错误:
ERROR: function width_bucket(integer, numeric[]) does not exist
LINE 1: select width_bucket( 5, array[0, 1.1, 2, 3, 4, 5, 6, 7, 8] )
^我的用例是,我使用这一功能来计算数据的断点,它并不总是整数(而且我在其他地方见过在那个代码库中,所以我不知道为什么在这里不起作用)。
如何让width_bucket接受一个非整数数组?
编辑后,为width_bucket函数添加到Postgres文档的链接,它表示它接受“任意兼容射线”,尽管我不知道“兼容”数组类型列表是在哪里定义的。
发布于 2022-04-26 16:01:14
错误信息在这里是误导的。问题不是width_bucket不支持数字数组,而是它似乎不支持操作数和阈值值之间的类型不匹配。
所有这些工作并返回相同的值:
select width_bucket( 5.0, array[0, 1.1, 2, 3, 4, 5, 6, 7, 8] )
select width_bucket( 5::numeric, array[0, 1.1, 2, 3, 4, 5, 6, 7, 8] )https://stackoverflow.com/questions/71994130
复制相似问题