请教一个SQL排序问题

xfpx 2018-05-16 07:42:39
请教一下大神们,数据库里有一个varchar型的字段A,用他排序后结果如下:
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1-1101
1-1102
1-1103
1-1104
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1-1201
1-1202
1-1203
1-1204
1121
1122
1201
1202
1203
1204
1205
1206
不明白为什么是这种结果,是字符“-”不参与排序吗?
...全文
1643 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dululululu 2018-05-29
根据你所列的结果可以看出排列的规律,其实-在排列中并没有什么作用,其中排列是按照数字比较来排的,例如1120和1-1201排列应该是按照1与1比,然后再是第二个1与1比,符号并不参与,,再接着比下去,直到0,接着前一个数结束,下一个还有1,所以1-1201在1120后 本人小菜鸟一只,提供的思路仅供参考,还望多多指教。
  • 打赏
  • 举报
回复
shw014 2018-05-22
这样也可以
 SELECT * FROM  表名  ORDER BY A collate Chinese_PRC_BIN  
  • 打赏
  • 举报
回复
shw014 2018-05-22
定义 表结构时 用 COLLATE 申明排序规则

DECLARE @local_variable  Table (A varchar(40) COLLATE Chinese_PRC_BIN)
 
INSERT INTo @local_variable
select '1101' A
UNION ALL SELECT '1102'
UNION ALL SELECT '1103'
UNION ALL SELECT '1-1101'  
UNION ALL SELECT '1-1102'
UNION ALL SELECT '1-1103'  
order by A   

SELECT * FROM @local_variable
  • 打赏
  • 举报
回复
victor_yang 2018-05-17
你期望的排序结果是什么?
  • 打赏
  • 举报
回复
卖水果的net 版主 2018-05-17
减号(-) 是连接符,这个字符的在排序时,权重很低,被忽略了。
  • 打赏
  • 举报
回复
victor_yang 2018-05-17
贴你的语句上来,还有表结构
  • 打赏
  • 举报
回复
order by 部分语句看看
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2018-05-16 07:42
社区公告
暂无公告