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; 如果降序行值必须按字母数字顺序排序,则如下所示,如果行值正在上升,则反向排序。这就是我们的期望。
dnn16
dnn13
dnn11
dnn10
dnn9
dnn8
dnn7
dnn6
dnn3
dnn1但目前,它按二进制顺序排序,mysql自然排序。
dnn9
dnn8
dnn7
dnn6
dnn3
dnn16
dnn13
dnn11
dnn1cfg_value是这样的
{
"tableId": "6f517a22-2df5-4b75-30af-bce2bd7b066a",
"rows": {
"4af8ecaf-4437-615a-7abd-937cd6883ce6": "dnn9"
}
} 请注意:这些字符串可以在任何地方和任何地方,也可以是1 dnn1,dnn1,abc123gef,abc,123。
发布于 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 <--如果需要,可以调整到更大的长度
https://stackoverflow.com/questions/74651051
复制相似问题