下面是行中的字符串:
{
"boost": {
"status": "true",
"position": 27,
"start_rounds": "100",
"rounds": 18
},
"vip": {
"status": "true",
"expired": 1566763202
},
"top":
{"status":"true",
"position":"16",
"expired":"1570953660"
}
}现在,我需要按此行的一部分对列表进行排序,特别是按"vip“部分中的过期日期排序。
喜欢
SELECT * FROM `servers` ORDER BY **expired part of string in `services` column**在MySQL中这是可能的吗?我尝试过SUBSTRING,但它不起作用,因为它是一个非常复杂的字符串结构。
当我在php中使用json_decode时,我通常使用它。但我想知道是否可以在MySQL中对它们进行排序。
我使用MySQL版本5.7.27
发布于 2019-07-30 02:15:19
对于Postgres:
select * from servers ORDER BY [ColumnName]->>'expired' ASC 对于Mysql:
SELECT id, name, JSON_EXTRACT([ColumnName], '$.expired') AS expired
FROM servers
ORDER BY expired ASCMysql Multi- level,您可以指定级别名称。例如,如果您想要按vip下的'expired‘排序:
SELECT id, name,JSON_EXTRACT([ColumnName], '$.vip.expired') AS expired
FROM servers
ORDER BY expired ASC发布于 2019-07-30 02:15:04
在Postgre中,您可以使用json运算符进行此操作
select
x,
x -> 'vip' ->> 'expired' as expired_string
from
(select '{"boost":{"status":"true","position":27,"start_rounds":"100","rounds":18},"vip":{"status":"true","expired":1566763202}}'::json as x)
order by
x -> 'vip' ->> 'expired'https://stackoverflow.com/questions/57259171
复制相似问题