【发布时间】:2016-12-09 11:45:17
【问题描述】:
给定jsonb 类型的列和数据结构如下:
{
"1": 10000.2,
"2": 77.2,
"3": -200.09,
"4": 12.55
}
需要从此json中检索结果并按VALUE排序
SELECT * FROM jsonb_each(
(SELECT jsonb_column FROM table WHERE id = 777)
)
ORDER BY VALUE DESC
LIMIT 100
是的,这给出了正确的结果,但问题是,按jsonb 类型排序的可靠性如何? (因为VALUE 是jsonb 类型)。这会一直正常工作吗?
我不希望(如果没有必要)显式转换:ORDER BY CAST(VALUE::TEXT AS NUMERIC),因为在 json 中,有大约 500 000 个元素,转换时,它需要 2 倍的时间,而不是仅按 VALUE 排序
【问题讨论】:
-
有类似的东西 - stackoverflow.com/questions/25967778/… 通常只有正确的转换才能得到预期的结果。
-
@JosMac 只是因为强制转换需要更多时间,有兴趣如果按jsonb类型排序也可以使用。如果不是 100% 可靠,那么我将使用正确的铸造
标签: json postgresql sorting jsonb postgresql-9.5