Mysql按JSON串中一个数值进行排序

如果使用JSON_EXTRACT函数提取JSON中的“fansCount”字段的数值并升序的话是有问题的,

SELECT JSON_UNQUOTE(JSON_EXTRACT(actor_data, "$.fansCount")) AS "粉丝数"  FROM kol_prices
ORDER BY JSON_UNQUOTE(JSON_EXTRACT(actor_data, "$.fansCount"))

排序的结果并不是按照我们数字的大小进行升序的

不难可以看出它的升序是按照位数从左到右进行排序的,这样和我们日常的理解有所偏差,这时候可以使用CAST函数转换成我们想要的方式排序,SQL如下:

SELECT JSON_UNQUOTE(JSON_EXTRACT(actor_data, "$.fansCount")) AS "粉丝数"  FROM kol_prices
ORDER BY CAST(JSON_UNQUOTE(JSON_EXTRACT(actor_data, "$.fansCount")) AS INT)

结果就是我们数学意义上的排序了:

 

 
posted @ 2021-11-25 15:09  DC红茶  阅读(1162)  评论(0编辑  收藏  举报