对同一字段中即有数字又有字母的情况进行排序(求SQL语句)
数据库某字段数据(22,11,1,2,2a,10,12,15)我希望的排序结果是,从左边先取数字排序,然后再以剩下的字母排序,我想要的结果是:1,2,2a,10,11,1...
数据库某字段数据(22,11,1,2,2a,10,12,15)我希望的排序结果是,从左边先取数字排序,然后再以剩下的字母排序,我想要的结果是:
1,2,2a,10,11,12,15,22;我想要SQL语句代码,谢谢
个人的思路是,先对字段末尾字符时行判断,如果是字母,则将字母去掉后转为int型,若无字母,则直接转换为int型,然后对转换后的值进行排序。只是本人对SQL编程不懂,有木有大侠帮个忙。给高分啦。 展开
1,2,2a,10,11,12,15,22;我想要SQL语句代码,谢谢
个人的思路是,先对字段末尾字符时行判断,如果是字母,则将字母去掉后转为int型,若无字母,则直接转换为int型,然后对转换后的值进行排序。只是本人对SQL编程不懂,有木有大侠帮个忙。给高分啦。 展开
展开全部
--建表
create table #
(
t nvarchar(20)
)
--插入数据
insert into #(t)
select '1'
union all select '2'
union all select '2a'
union all select '10'
union all select '11'
union all select '12'
union all select '15'
union all select '22'
--排序SQL
select t from #
order by case when LEN(t)=1 then t when t like '%[a-z]' then LEFT(t,1) else 'zz' end,t
--删除环境
drop table #
create table #
(
t nvarchar(20)
)
--插入数据
insert into #(t)
select '1'
union all select '2'
union all select '2a'
union all select '10'
union all select '11'
union all select '12'
union all select '15'
union all select '22'
--排序SQL
select t from #
order by case when LEN(t)=1 then t when t like '%[a-z]' then LEFT(t,1) else 'zz' end,t
--删除环境
drop table #
展开全部
需要一个判断字符是否为数字的函数,你可以写一个,
假设名称为 bool f_isdigit()
order by case when f_isdigit(col) then convert(int,col) else 999999999 end asc, col asc
假设名称为 bool f_isdigit()
order by case when f_isdigit(col) then convert(int,col) else 999999999 end asc, col asc
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1,2,2a,10,11,12,15,22
追问
晕,我要排序的SQL语句
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
order by 列名
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询