编写一个表达式,返回第一个字母字符,然后按照该表达式进行排序。
Order By substring(LTrim(
Replace(Replace(Replace(Replace(Replace(
Replace(Replace(Replace(Replace(Replace(
colname, '1', ''),'2',''),'3',''),'4,''),'5', ''),
'6',''),'7',''),'8',''),'9',''),'0',''))
1,1)
如果您希望按整个城市名称排序而不仅仅是按第一个字符排序(如问题标题所指定的那样),请使用以下方法:
Order By LTrim(
Replace(Replace(Replace(Replace(Replace(
Replace(Replace(Replace(Replace(Replace(
colname, '1', ''),'2',''),'3',''),'4,''),'5', ''),
'6',''),'7',''),'8',''),'9',''),'0',''))
上面是一个猜测(我没有尝试过),但是思路是先从列值中删除所有数字字符,然后取剩余部分的第一个字符。
此外,如果这个方法可行,而且如果您有任何对数据库的开发访问权限(考虑DRY原则),我建议在该表上添加一个计算列(或对该表进行单独的视图),该计算列的定义使用上述表达式,以便这个镇名的“提取”可以供其他可能需要访问它的代码使用,而不必将这个表达式复制到每个需要它的地方。