我有一张存放在桌子里的房间里的位置清单。他们大多叫A1,A2,.A16,B1,B2,B16,C1.
当查询此列表时,我将如何对结果进行排序,以便将字母与数字按顺序分组?
显然SELECT name FROM Shelves ORDER BY name不工作,因为它返回A1,A10,.A16,A2.
FROM Location ORDER BY LENGTH(name)也不起作用,因为A、B、C等不再分组。
编辑:
不是所有的位置名称都是一个字符后面跟着数字,也有安全1,安全2,安全3,货币1,货币2.(房间保险箱里的架子)。
A1等没有空格,但安全1,货币1和诸如此类。
发布于 2015-08-07 17:06:50
使用regex将名称与数字分开。
SELECT *
FROM Shelves
ORDER BY
regexp_replace(name , '[^a-zA-Z]*', '', 'g') ,
regexp_replace(name , '[^0-9]*', '', 'g')::INThttps://stackoverflow.com/questions/31882821
复制相似问题