首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SELECT函数中按行中的某个值进行排序?

如何在SELECT函数中按行中的某个值进行排序?
EN

Stack Overflow用户
提问于 2019-07-30 02:00:37
回答 2查看 46关注 0票数 0

下面是行中的字符串:

代码语言:javascript
复制
{
    "boost": {
        "status": "true",
        "position": 27,
        "start_rounds": "100",
        "rounds": 18
    },
    "vip": {
        "status": "true",
        "expired": 1566763202
    },
    "top":
        {"status":"true",
        "position":"16",
        "expired":"1570953660"
    }
}

现在,我需要按此行的一部分对列表进行排序,特别是按"vip“部分中的过期日期排序。

喜欢

代码语言:javascript
复制
SELECT * FROM `servers` ORDER BY **expired part of string in `services` column**

在MySQL中这是可能的吗?我尝试过SUBSTRING,但它不起作用,因为它是一个非常复杂的字符串结构。

当我在php中使用json_decode时,我通常使用它。但我想知道是否可以在MySQL中对它们进行排序。

我使用MySQL版本5.7.27

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-30 02:15:19

对于Postgres:

代码语言:javascript
复制
select * from servers ORDER BY [ColumnName]->>'expired' ASC 

对于Mysql:

代码语言:javascript
复制
SELECT id, name, JSON_EXTRACT([ColumnName], '$.expired')  AS expired
FROM servers 
ORDER BY expired ASC

Mysql Multi- level,您可以指定级别名称。例如,如果您想要按vip下的'expired‘排序:

代码语言:javascript
复制
SELECT id, name,JSON_EXTRACT([ColumnName], '$.vip.expired') AS expired
FROM servers 
ORDER BY expired ASC

参考:Query a multi-level JSON object stored in MySQL

票数 0
EN

Stack Overflow用户

发布于 2019-07-30 02:15:04

在Postgre中,您可以使用json运算符进行此操作

代码语言:javascript
复制
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'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57259171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档