sql 字符与数字排序

有a表如下字段id1a2b3c排序后要得到idabc123也就是说字符按照字符来排序,数字按照数字来排序~忘高人们告诉下~感谢不好意思~忘了说我用的是PostgreSQL... 有a表如下字段
id
1
a
2
b
3
c
排序后要得到
id
a
b
c
1
2
3
也就是说字符按照字符来排序,数字按照数字来排序~忘高人们告诉下~感谢
不好意思~忘了说我用的是PostgreSQL
展开
 我来答
百度网友dc28b1b31
2009-08-21 · TA获得超过139个赞
知道答主
回答量:52
采纳率:0%
帮助的人:37.6万
展开全部
Sql给你,分给我
转换asc码,简洁方便
1是49 a是97 z就是123 只要让数字的码都大于字母就可以了,73是可以根据情况改的,要是有大写情况,也能处理
select Id from a order by (case when isNumEric(Id)=1 then ascii(Id)+73 else ascii(Id) end)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a5202003
2009-08-21 · TA获得超过2249个赞
知道大有可为答主
回答量:1885
采纳率:75%
帮助的人:593万
展开全部
按照id排序的话结果应该是123abc

我想到的就是改变字符串长度
比如'1'+' '就会排到abc前面

代码如下

select case when IisnumEric(id)=1 then id+' ' else id end [id] order by id
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
如意又婉丽的雪花N
2009-08-21 · TA获得超过1213个赞
知道小有建树答主
回答量:630
采纳率:0%
帮助的人:1025万
展开全部
--在临时表中新增一个排序字段,可实现最终排序
--以下虽然是在SQL Server中实现,但思路也可供参考
select IDENTITY(int,1,1) c1,id into #temp from t where ISNUMERIC(id)<>1 order by id;
insert #temp select ID from t where ISNUMERIC(id)=1 order by id;

select id from #temp order by c1;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiehuangwei
2009-08-21 · TA获得超过162个赞
知道小有建树答主
回答量:395
采纳率:0%
帮助的人:265万
展开全部
加个索引,应该会自动排序的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式