日期:2014-05-18  浏览次数:20486 次

关于包含字符'-'的ORDER BY问题
表里有以下三条数据,字段COL的类型为nvarchar(100)。
eBusiness Consultant
E-business Manager
eBusiness Specialist

如果ORDER BY COL,则返回
eBusiness Consultant
E-business Manager
eBusiness Specialist

如果ORDER BY CONVERT(varchar(100),COL),则返回
E-business Manager
eBusiness Consultant
eBusiness Specialist

看上去直接ORDER BY该字段的时候好像忽略了字符‘-’,不知道为什么?请大虾们给分析分析,非常感谢!

------解决方案--------------------
解决方法(或许比convert快点,没测试过):

order by lower(COL) collate Latin1_General_Bin

具体原因未明。
------解决方案--------------------
另外,根据我的测试,位于最后的连字符“-”不会被忽略,仍然参加排序,单独的连字符属于此例的特殊情况。
------解决方案--------------------
SQL Server 2008 也存在这个问题,看了相关的资料,看来是MS有意为之,不知为何拿单引号和连接号作文章。