sql 中文数字混合排序问题 10

排序字段的内容为“第1号、第2号……第10号、第11号、第12号……“用orderby字段排序出来是“第1号、第10号、第11号、第12号……第2号……”怎么才能按正常的... 排序字段的内容为“第1号、第2号……第10号、第11号、第12号……“
用order by 字段 排序出来是“第1号、第10号、第11号、第12号……第2号……”
怎么才能按正常的数字大小来排序,在不改变数据库结构的前提下如何实现,asp加mdb数据库,谢谢
我用的是access数据库哦 好像你们的方法不支持哦
2楼表达式中 'replace' 函数未定义。
展开
 我来答
夕夜问情
2015-09-07 · TA获得超过537个赞
知道小有建树答主
回答量:444
采纳率:100%
帮助的人:350万
展开全部
with ct as
(
select '第1号' as cj UNION ALL
select '第10号' as cj UNION ALL
select '第11号' as cj UNION ALL
select '第2号' as cj UNION ALL
select '第5号' as cj UNION ALL
select '第4号' as cj UNION ALL
select '第6号' as cj UNION ALL
select '第8号' as cj
)
SELECT SUBSTRING(cj,2,LEN(cj)-2),* from ct
ORDER BY convert(int,SUBSTRING(cj,2,LEN(cj)-2))

测试是ok的 但是像这种排序在数据量大的话 效率不高
追问
你是用什么数据库测试的 access不行啊
追答
access  哪里不行啊   对应的改下函数就好了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
荼糜ZDW
2015-09-07 · TA获得超过118个赞
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:146万
展开全部
select A.SN
from table a
order by TO_NUMBER(sn)
这么试试呢,出现你这样的结果是因为数据库中的该字段是字符类型的,如果你把字符型强制转换为NUMBER类型就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友94f02eb
2015-09-07 · TA获得超过8613个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4497万
展开全部
可以按照数字来排序。
ORDER BY CINT(REPLACE(REPLACE(排序字段,'第',''),'号',''))

我测试过的,是OK的
更多追问追答
追问
不行,access数据库不行哦
追答
我就是ACCESS 数据库的
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式