首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sql中按字母数字顺序对JSON_EXTRACT或JSON_VALUE值进行排序

如何在sql中按字母数字顺序对JSON_EXTRACT或JSON_VALUE值进行排序
EN

Stack Overflow用户
提问于 2022-12-02 04:54:02
回答 1查看 20关注 0票数 0
代码语言:javascript
复制
SELECT * 
FROM config_server_db.configuration_item 
where configuration_item.topic_info_id = 96 AND FIND_IN_SET('6f517a22-2df5-4b75-30af-bce2bd7b066a', labels)  
order by JSON_VALUE(configuration_item.cfg_value, '$."rows"."4af8ecaf-4437-615a-7abd-937cd6883ce6"') desc; 

如果降序行值必须按字母数字顺序排序,则如下所示,如果行值正在上升,则反向排序。这就是我们的期望。

代码语言:javascript
复制
dnn16
dnn13
dnn11
dnn10
dnn9
dnn8
dnn7
dnn6
dnn3 
dnn1

但目前,它按二进制顺序排序,mysql自然排序。

代码语言:javascript
复制
dnn9
dnn8
dnn7
dnn6
dnn3
dnn16
dnn13
dnn11
dnn1

cfg_value是这样的

代码语言:javascript
复制
{
    "tableId": "6f517a22-2df5-4b75-30af-bce2bd7b066a",
    "rows": {
        "4af8ecaf-4437-615a-7abd-937cd6883ce6": "dnn9"
    }
} 

请注意:这些字符串可以在任何地方和任何地方,也可以是1 dnn1,dnn1,abc123gef,abc,123。

EN

回答 1

Stack Overflow用户

发布于 2022-12-02 09:36:39

这起作用了,https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_lpad

按lpad( '$."rows"."4af8ecaf-4437-615a-7abd-937cd6883ce6"'),10,0)排序(JSON_VALUE(configuration_item.cfg_value,configuration_item.cfg_value 10,0)<-假设最大字符串长度为10 <--如果需要,可以调整到更大的长度

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74651051

复制
相关文章

相似问题

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