• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

请教一个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
不明白为什么是这种结果,是字符“-”不参与排序吗?
...全文
1595 点赞 收藏 7
写回复
7 条回复
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日
贴你的语句上来,还有表结构
回复 点赞
砸死牛顿的苹果 2018年05月17日
order by 部分语句看看
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告