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' 函数未定义。 展开
用order by 字段 排序出来是“第1号、第10号、第11号、第12号……第2号……”
怎么才能按正常的数字大小来排序,在不改变数据库结构的前提下如何实现,asp加mdb数据库,谢谢
我用的是access数据库哦 好像你们的方法不支持哦
2楼表达式中 'replace' 函数未定义。 展开
3个回答
展开全部
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的 但是像这种排序在数据量大的话 效率不高
(
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 哪里不行啊 对应的改下函数就好了啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select A.SN
from table a
order by TO_NUMBER(sn)
这么试试呢,出现你这样的结果是因为数据库中的该字段是字符类型的,如果你把字符型强制转换为NUMBER类型就可以了。
from table a
order by TO_NUMBER(sn)
这么试试呢,出现你这样的结果是因为数据库中的该字段是字符类型的,如果你把字符型强制转换为NUMBER类型就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以按照数字来排序。
ORDER BY CINT(REPLACE(REPLACE(排序字段,'第',''),'号',''))
我测试过的,是OK的
ORDER BY CINT(REPLACE(REPLACE(排序字段,'第',''),'号',''))
我测试过的,是OK的
更多追问追答
追问
不行,access数据库不行哦
追答
我就是ACCESS 数据库的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询