你好我试图通过排序
在mysql中订购似乎是mysql按
排序见下文
select distinct uag_linecode from part order by uag_linecode;
| A-1 |
| A/C |
| A1S | out of place
| ABP |
| ABS |
| ACI |
| ADM |
| ADR |
| BAS |
这就是我想要的:
A-1
A/C
ABR
ABS
ACI
ADM
ADR
A1S correct spot
BAS
如果有人能帮助我,我会永远感激。
所有行代码总是3个字符。
答案 0 :(得分:5)
如果它总是第二个字符,这样的东西就可以工作 - 你可以添加到case子句来检查第一个和第三个字符......
select distinct uag_linecode,
substring(uag_linecode, 2, 1)
from part
order by
case
when substring(uag_linecode, 2, 1) REGEXP ('^[0-9]') THEN 1 ELSE 0 END , uag_linecode
这是SQL Fiddle。
- 编辑 这似乎也适用于第1和第3个字符:
select distinct uag_linecode,
substring(uag_linecode, 1, 1),
substring(uag_linecode, 2, 1),
substring(uag_linecode, 3, 1)
from part
order by
case when substring(uag_linecode, 1, 1) REGEXP ('^[0-9]') THEN 1 ELSE 0 END,
substring(uag_linecode, 1, 1),
case when substring(uag_linecode, 2, 1) REGEXP ('^[0-9]') THEN 1 ELSE 0 END,
substring(uag_linecode, 2, 1),
case when substring(uag_linecode, 3, 1) REGEXP ('^[0-9]') THEN 1 ELSE 0 END ,
substring(uag_linecode, 3, 1)
更多Fiddle。
同样正如@Orbling所说,你将获得更好的表现(特别是如果你有很多记录)来删除REDEXP并使用> ='0'AND< ='9'。
祝你好运。