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)

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

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM