我的数据库中有一个包含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
并同时按数字排序的任何建议?
答案 0 :(得分:0)
JSON只能通过在Postgres 9.4中引入JSON Binary进行数字排序或其他方式排序,但由于我们不在该版本上,我的解决方法将是0填充int。 ' 0001' > ' 0011'一切都很好。