MySQL 按整数对 varchar 进行排序
MySQL Sort varchar by its integer
如何像这样对列 (VARCHAR) 进行排序:
[CSGO] Bot #1
[CSGO] Bot #2
[CSGO] Bot #3
...
[CSGO] Bot #10
我的查询结果:
[CSGO] Bot #2
[CSGO] Bot #23
[CSGO] Bot #5
[CSGO] Bot #6
查询:
SELECT bot_id, name, username FROM bots ORDER BY ABS(REPLACE(name, '[CSGO] #', '')) ASC
没有 ABS() 和 REPLACE(),结果基本相同。
假定前缀长度相同的简单方法:
order by length(name), name
如果你只想看#后面的部分:
order by substring_index(name, '#', -1) + 0
SELECT bot_id, name, username
FROM bots
ORDER BY substring_index(name, '#', 1), substring_index(name, '#', -1) + 0
如果您的专栏名称始终以“[CSGO] Bot #”开头,则执行此操作:
SELECT bot_id, name, username
FROM bots
ORDER BY substr(name, 13) + 0
或
ORDER BY ABS(REPLACE(name, '[CSGO] Bot #', ''))*1 ASC
如何像这样对列 (VARCHAR) 进行排序:
[CSGO] Bot #1
[CSGO] Bot #2
[CSGO] Bot #3
...
[CSGO] Bot #10
我的查询结果:
[CSGO] Bot #2
[CSGO] Bot #23
[CSGO] Bot #5
[CSGO] Bot #6
查询:
SELECT bot_id, name, username FROM bots ORDER BY ABS(REPLACE(name, '[CSGO] #', '')) ASC
没有 ABS() 和 REPLACE(),结果基本相同。
假定前缀长度相同的简单方法:
order by length(name), name
如果你只想看#后面的部分:
order by substring_index(name, '#', -1) + 0
SELECT bot_id, name, username
FROM bots
ORDER BY substring_index(name, '#', 1), substring_index(name, '#', -1) + 0
如果您的专栏名称始终以“[CSGO] Bot #”开头,则执行此操作:
SELECT bot_id, name, username
FROM bots
ORDER BY substr(name, 13) + 0
或
ORDER BY ABS(REPLACE(name, '[CSGO] Bot #', ''))*1 ASC