mysql根据字符串内数字排序

更新时间:02-09 教程 由 争议 分享

在mysql中,我们可以使用order by子句进行排序操作。而如果需要按照字符串内部的数字大小进行排序,则需要使用一些特殊的技巧。

假设有以下字符串:

apple2banana10banana2cherry1cherry11

如果直接使用order by语句进行排序,则结果将类似这样:

apple2banana10banana2cherry1cherry11

显然,这并不符合我们的要求。我们希望按照数字的大小进行排序。

为了实现这个目标,我们可以使用mysql内置的函数substring和cast。

substring函数可以从字符串中提取出一段子字符串。而cast函数可以将字符串转换为数字类型。

具体操作如下:

select * from table_nameorder by cast(substring(column_name, patindex('%[0-9]%', column_name), len(column_name)) as unsigned)

解释:

patindex('%[0-9]%', column_name)表示在column_name列中查找到第一个数字的位置substring(column_name, patindex('%[0-9]%', column_name), len(column_name))表示提取出column_name列中从第一个数字开始的所有字符cast(substring(...) as unsigned)表示将提取出来的字符串转换为无符号整型

使用以上语句进行排序,则结果将如下:

cherry1apple2banana2banana10cherry11

可以看到,按照数字大小进行排序的结果已经正确了。

声明:关于《mysql根据字符串内数字排序》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2082476.html