sql查询排序

来源:百度知道 编辑:UC知道 时间:2024/05/24 08:11:18
我有一个table表,有个x列,字符为
“a1b”
“a2b”
“a3b”
.
.
.
“a10b”
“a11b”

那我的查询语句要怎么写才能按照中间数字排序下来呢?
请各位高手指教,谢谢

select * from table order by cast(substring(x,2,len(x)-2) as int)

经测试通过

如果你的字符在'a','b'都是不变的话 ;直接排序就可以了

select * from table_name
order by subctring(x,2,3)
测试可以执行,X是列名

其实没你想的那么复杂,排序是按每个字符的ascii码排序的,先按第一个字母排序,如果第一个字母一样,那么再按照第二个字母排序,依次类推,按照你的情况,直接排序就可以了
order by x

能不能确保首尾都只有1个字母?
如果能就用这个吧

select * from 表名
order by substring(x列,2,len(x)-1)

--老问题了,是提取字串中数字的问题,设备X字段类型为NVARCHAR:
select * from tablename order by
convert(int,substring(x,patindex(N'%[0-9]%',x),len(str1)-patindex(N'%[0-9]%',x)+1-patindex(N'%[0-9]%',reverse(x))+1)))