求字段长度相同的先数字后字母的排序SQL语句

joanagle 2016-10-17 03:16:31
有列ID如果直接ORDER BY 的话会得到如下


而我想得到这样的效果

...全文
199 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-10-17
  • 打赏
  • 举报
回复
ORDER BY PATINDEX('%[A-F]%',RIGHT(Col1,1)) ,Col1 SIGN(CHARINDEX(RIGHT(Col1,1),'ABCDEF')) ASC,Col1 -----------的确,要这样改应该OK
joanagle 2016-10-17
  • 打赏
  • 举报
回复
问题得到解决,结贴了
joanagle 2016-10-17
  • 打赏
  • 举报
回复
引用 10 楼 roy_88 的回复:
这样改测测,优先取右边第一个字符



SELECT 
*
FROM tablename
ORDER BY CHARINDEX(RIGHT(Col1,1),'ABCDEF') DESC,Col1

你这个不行, 会把C00A,C01A,C02A 都排在一起了
中国风 2016-10-17
  • 打赏
  • 举报
回复
用#10方法改改测测
joanagle 2016-10-17
  • 打赏
  • 举报
回复
晕死,逗号放错位置了,这回终于对了
 select * from tablename order by  PATINDEX('%[A-F]%',right(id,2)),id
中国风 2016-10-17
  • 打赏
  • 举报
回复
这样改测测,优先取右边第一个字符
还有bug,要先判断是否存在
SELECT 
*
FROM tablename
ORDER BY SIGN(CHARINDEX(RIGHT(Col1,1),'ABCDEF')) ASC,Col1
joanagle 2016-10-17
  • 打赏
  • 举报
回复
刚刚那个少了个逗号
 select * from tablename order by  PATINDEX('%[A-F]%,'right(id,2)),id
[/quote]
joanagle 2016-10-17
  • 打赏
  • 举报
回复
引用 3 楼 roy_88 的回复:
结果集1 为17进制 显示为正常 结果集2 要这样显示判断是否有字母再按列显示 e.g.
SELECT 
*
FROM tablename
ORDER BY PATINDEX('%[A-F]%',Col1),Col1
呵呵,受到你的启发,我稍改动了下,成功得到了我想要的结果
 select * from tablename order by  PATINDEX('%[A-F]%'right(id,2)),id
mingqing6364 2016-10-17
  • 打赏
  • 举报
回复
TO:#3 两个问题 第一:16进制 第二:例子中以字母C开头,所以排序应修改
SELECT 
	*
FROM #
ORDER BY PATINDEX('%[A-F]%',RIGHT(id,LEN(id) - 1)),id
SELECT 
	*
FROM #
ORDER BY ISNUMERIC(RIGHT(id,LEN(id) - 1)) DESC,id
joanagle 2016-10-17
  • 打赏
  • 举报
回复
引用 2 楼 roy_88 的回复:
26为错误数据OO不是00?
呵呵,你太细心了,是C00A, 非C0OA
joanagle 2016-10-17
  • 打赏
  • 举报
回复
引用 3 楼 roy_88 的回复:
结果集1 为17进制 显示为正常 结果集2 要这样显示判断是否有字母再按列显示 e.g.
SELECT 
*
FROM tablename
ORDER BY PATINDEX('%[A-F]%',Col1),Col1
不行啊,你这个语句排出来结果跟直接ORDER BY 的结果是一样的
joanagle 2016-10-17
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
是固定的 4 位吗?
是的,长度固定4位
中国风 2016-10-17
  • 打赏
  • 举报
回复
结果集1 为17进制 显示为正常 结果集2 要这样显示判断是否有字母再按列显示 e.g.
SELECT 
*
FROM tablename
ORDER BY PATINDEX('%[A-F]%',Col1),Col1
中国风 2016-10-17
  • 打赏
  • 举报
回复
26为错误数据OO不是00?
卖水果的net 2016-10-17
  • 打赏
  • 举报
回复
是固定的 4 位吗?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧