sql 数字+字符+数字排序问题

1F21A23A23A10.....进行排序,排序要求1、优先字母前的数字排序2、其次是字母排序3、字母后的数字排序我需要得到排序效果是:1A21F23A23A10请问S... 1F2

1A2
3A2
3A10.....进行排序,排序要求
1、优先字母前的数字排序
2、其次是字母排序
3、字母后的数字排序
我需要得到排序效果是:
1A2
1F2
3A2
3A10
请问SQL怎么写
第一个数字为5位数以内整数
第二个字母为A-Z
第三个数字为2位数以内整数
如99999Z99
展开
 我来答
fly夜飞纷飞
2015-01-15 · TA获得超过132个赞
知道小有建树答主
回答量:168
采纳率:85%
帮助的人:112万
展开全部
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.....进行排序的列,改一下就好了,不管你第一个数字
或第二个数字有多少位都可以排序,只要你的字母在数字中只有一位就只有可以。

atkinson_nou
2015-01-15 · TA获得超过161个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:228万
展开全部
select *
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)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
至爱一生sky
2015-01-15 · 超过20用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:37.4万
展开全部
1F2

1A2
3A2 你这些数据是写在数据表中的一列里面吗
追问
是的,都在同一列
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式