将字符串转换为json并按值排序为int

时间:2015-02-03 16:25:15

标签: json postgresql sql-order-by aggregate

我的数据库中有一个包含JSON值的字符串字段。我可以通过转换为json并访问该值来按此值对行进行排序,如下所示:

SELECT id FROM table ORDER BY stringvalue::json->>'key' ASC

但是,这会按字母顺序排序,但'key'包含一个数值,所以不是1-2 -...- 10-11,它将会是1-10-11-2 -...

文档表明(jsonvalue->>'m148')::int ASC应该可以正常工作,但是在尝试这个时我得到“聚合函数需要出现在分组列中”,我想是因为我没有json字段,但是我已经转换为json的字符串字段;

SELECT id FROM table ORDER BY (stringvalue::json->>'key')::int ASC

有关如何将此格式转换为json并同时按数字排序的任何建议?

1 个答案:

答案 0 :(得分:0)

JSON只能通过在Postgres 9.4中引入JSON Binary进行数字排序或其他方式排序,但由于我们不在该版本上,我的解决方法将是0填充int。 ' 0001' > ' 0011'一切都很好。