select * from table order by translate(lie,'一二三四五六七八九','123456789')
太多的话就得另说了
如果数字都是小于10的,可以直接order by,按照字符规则排序就是你想要的这个。如果数字有两位以上的,这时候11会排在2的前面,如果想数字按照数字的规则排序,字母按照字母的规则排序,需要根据条件将数字和字母分别查询出来进行排序,然后使用union all联接出结果。
以前还没碰到过这种需求,刚试出来的!在模块中创建下面代码:
Function getNum(ByVal str1 As String) As Integer
getNum = 0
For i = 1 To Len(str1)
ks = Mid(str1, i, 1)
If IsNumeric(ks) Then getNum = getNum * 10 + ks
Next
End Function
再创建查询如下:
select address from
(SELECT getNum(address) as num1,address
FROM 表名)
order by num1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)