对 SQL 中嵌入数字的字符串列进行排序
在 SQL 中,可以使用特定技术对包含数字的字符串列进行排序。当 MySQL 等数据库的自然排序算法无法产生所需结果时,这会很有用。
要实现对包含数字的字符串列进行自定义排序,可以采用多种方法:
使用 CAST 和 SUBSTRING:
SELECT *
FROM table
ORDER BY CAST(SUBSTRING(column,LOCATE(' ',column) 1) AS SIGNED)
此技术将列分为两部分:空格之前的前缀和空格之后的数字。然后将该数字转换为数字类型(在本例中为 SIGNED)进行比较。
使用 SUBSTRING_INDEX:
ORDER BY SUBSTRING_INDEX(st, " ", 1) ASC, CAST(SUBSTRING_INDEX(st, " ", -1) AS SIGNED)
此方法使用 SUBSTRING_INDEX 函数来提取前缀和数字组件。然后,它首先按前缀排序,然后按转换后的数字排序。
注意: 如果列模式与“WORD_space_NUMBER”不同,则可能需要采用不同的方法。
示例:
示例数据 | 自然排序 | 自定义排序 |
---|---|---|
a 1, a 12, a 6, a 11 | a 1, a 12, a 2, a 3 | a 1, a 2、a 3、a 12 |
b 1、b 12、b 6、b 11 | b 1、b 12、b 2、b 3 | b 1、b 2、b 3、b 12 |
通过采用这些技术,可以以自定义方式对嵌入数字的字符串列进行排序,确保结果符合特定的应用程序要求。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3