Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串强制转换为json并按值排序为int_Json_Postgresql_Sql Order By_Aggregate - Fatal编程技术网

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

将字符串强制转换为json并按值排序为int,json,postgresql,sql-order-by,aggregate,Json,Postgresql,Sql Order By,Aggregate,我的数据库中有一个包含JSON值的字符串字段。通过强制转换到json并访问该值,我可以按照该值对行进行排序,如下所示: SELECT id FROM table ORDER BY stringvalue::json->>'key' ASC 但是,这将按字母顺序排序,但“键”包含一个数值,因此它将变为1-10-11-2- 文档建议(jsonvalue->'m148')::int ASC应该可以工作,但我在尝试此操作时得到了“聚合函数需要出现在分组列中”,我猜这是因为我没有json字段

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

SELECT id FROM table ORDER BY stringvalue::json->>'key' ASC
但是,这将按字母顺序排序,但“键”包含一个数值,因此它将变为1-10-11-2-

文档建议
(jsonvalue->'m148')::int ASC
应该可以工作,但我在尝试此操作时得到了“聚合函数需要出现在分组列中”,我猜这是因为我没有
json
字段,而是一个字符串字段,我已经将其转换为
json

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

关于我如何保持这种格式的转换为
json
,同时进行数字排序,有什么建议吗?

json只能在Postgres 9.4中引入json二进制文件后进行数字排序或其他排序,但由于我们不在该版本上,我的解决方法将是0-padding int.'0001'>'0011',一切正常。

如果这些示例只是这些示例的简化,请发布准确的错误消息/代码和整个查询。select在其状态下应该可以工作(但不是以字符串形式存储json的最佳实践)。你提出的问题与你提出的问题不符。