如果它总是第二个字符,这样的东西会起作用——你可以添加到 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 小提琴。
--EDIT 这似乎也适用于第一个和第三个字符:
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)
还有更多小提琴。
同样正如@Orbling 正确所说,您将获得更好的性能(特别是如果您有很多记录)来删除REDEXP 并使用> = '0' AND <= '9'。
祝你好运。