MySQL字母数字排序



我尝试了许多解决方案,LENGTH, CAST等。我似乎想不出一个可行的解决方案来按字母顺序排序,那么自然(1,2 ....)10、11)。任何帮助将非常感激!不是每个结果都有一个数字,有些只有一个数字,有些有两个数字。我可以按字母顺序排序,也可以按自然顺序从1到10排序,但我似乎无法同时做到这两点。

<表类> 名称 tbody><<tr>鱼1鱼2猫猫11猫4狗2狗10狗11

你的问题的一个简单的解决方案是分割你的数据,然后排序,当没有附加数字时,+ 0保证它是第一个。

相同名称的任何顺序通常都不可解

如果你也有字母,第二个参数必须是CASE WHEN,这将进一步排序

CREATE TABLE tab1
(`name` varchar(7))
;

INSERT INTO tab1
(`name`)
VALUES
('Fish 1'),
('Fish 2'),
('Cats'),
('Cats 11'),
('Cats 4'),
('Dogs 2'),
('Dogs 10'),
('Dogs 11')
;
SELECt 
name
FROM
tab1
ORDER BY SUBSTRING_INDEX(name,' ',1) ASC ,SUBSTRING_INDEX(name,' ',-1) + 0 ASC
| name ||:------ ||猫||猫4 |猫11 ||狗狗2 ||狗狗10 ||狗狗11 ||鱼1 || Fish 2 |

db<此处小提琴>

最新更新