sql 数字+字符+数字排序问题
1F21A23A23A10.....进行排序,排序要求1、优先字母前的数字排序2、其次是字母排序3、字母后的数字排序我需要得到排序效果是:1A21F23A23A10请问S...
1F2
1A2
3A2
3A10.....进行排序,排序要求
1、优先字母前的数字排序
2、其次是字母排序
3、字母后的数字排序
我需要得到排序效果是:
1A2
1F2
3A2
3A10
请问SQL怎么写
第一个数字为5位数以内整数
第二个字母为A-Z
第三个数字为2位数以内整数
如99999Z99 展开
1A2
3A2
3A10.....进行排序,排序要求
1、优先字母前的数字排序
2、其次是字母排序
3、字母后的数字排序
我需要得到排序效果是:
1A2
1F2
3A2
3A10
请问SQL怎么写
第一个数字为5位数以内整数
第二个字母为A-Z
第三个数字为2位数以内整数
如99999Z99 展开
3个回答
展开全部
SELECT * FROM t3 ORDER BY
CAST (LEFT(name,patindex('%[a-z,A-Z]%',right(name,len(name)-patindex('%[0-9]%',name)))) AS INT) ,
SUBSTRING(NAME,patindex('%[a-z,A-Z]%',right(name,len(name)-patindex('%[0-9]%',name)+1)),1 ) ,
CAST(RIGHT(name,len(name) - patindex('%[a-z,A-Z]%',right(name,len(name)-patindex('%[0-9]%',name)+1))) AS INT )
就是麻烦点,其中的name列就是你的
1A2
3A2
3A10.....进行排序的列,改一下就好了,不管你第一个数字
或第二个数字有多少位都可以排序,只要你的字母在数字中只有一位就只有可以。
展开全部
select *
from t
order by substr(col, 1, 1), substr(col, 2, 1), substr(col, 3, 1)
如果不是oracle数据库,substr换成其他数据库中,字符串截取的函数
from t
order by substr(col, 1, 1), substr(col, 2, 1), substr(col, 3, 1)
如果不是oracle数据库,substr换成其他数据库中,字符串截取的函数
追问
第一个数字为5位数以内整数
第二个字母为A-Z
第三个数字为2位数以内整数
如99999Z99
加上这个条件是不是就不对了?
追答
rder by substr(col, 1, 5), substr(col, 6, 1), substr(col, 7, 2)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1F2
1A2
3A2 你这些数据是写在数据表中的一列里面吗
1A2
3A2 你这些数据是写在数据表中的一列里面吗
追问
是的,都在同一列
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询