排序顺序为:英文<汉字<数字<其它字符
select * from (
select * from `user` where not (true_name REGEXP '^[0-9]')
and not (true_name REGEXP '^[<_!@#$%^&*`~()-+=\\]')
order by CONVERT(true_name USING gbk) ) c UNION ALL
select * from (
select * from `user`
where (true_name REGEXP '^[0-9<_!@#$%^&*`~()-+=\\]')
order by CONVERT(true_name USING gbk)) b
UNION ALL与 order by不可以放在同一名查询语句中,因此需要一层嵌套,其它字符那边如果还有别的字符可以在正则表达式里再加
mysql有一套自己的排序规则,按照ascii码表来排序,如果没有特殊要求的话,可以直接写成
select * from `user` order by CONVERT(true_name USING gbk)
这样的排序顺序为 数字<其它字符<英文<汉字