感谢大家的关注,我试了一下,感觉是和排序规则有关系的。 我做了下面的实验,我的数据库默认的排序规则是Chinese_PRC_CI_AS,但是排序的时候使用不同的排序规则出现了不同的结果。create table a1( word varchar(20))insert into a1 select 'b0' union all select 'b-' union all select 'b01' union all select 'b-1'select word as 'Chinese_PRC_BIN word' from a1 order by word collate Chinese_PRC_BIN 结果是 Chinese_PRC_BIN word -------------------- b- b-1 b0 b01select word as 'Chinese_PRC_CI_AS word' from a1 order by word collate Chinese_PRC_CI_AS 结果是 Chinese_PRC_CI_AS word ---------------------- b- b0 b01 b-1到底为什么Chinese_PRC_CI_AS,要这么排,还没搞明白。 希望大家继续关注。
if ('b0'collate Chinese_PRC_BIN > 'b-'collate Chinese_PRC_BIN) print 'true 1' -- printed for meif ('b01' collate Chinese_PRC_BIN > 'b-1' collate Chinese_PRC_BIN) print 'true 2' -- printed for me
还有就是当你把'b-'换成'b_'时,结果也是正确的....所以很有可能是'-'在作怪.只是猜测,等高人来解答.
我做了下面的实验,我的数据库默认的排序规则是Chinese_PRC_CI_AS,但是排序的时候使用不同的排序规则出现了不同的结果。create table a1(
word varchar(20))insert into a1 select 'b0'
union all select 'b-'
union all select 'b01'
union all select 'b-1'select word as 'Chinese_PRC_BIN word' from a1 order by word collate Chinese_PRC_BIN
结果是
Chinese_PRC_BIN word
--------------------
b-
b-1
b0
b01select word as 'Chinese_PRC_CI_AS word' from a1 order by word collate Chinese_PRC_CI_AS
结果是
Chinese_PRC_CI_AS word
----------------------
b-
b0
b01
b-1到底为什么Chinese_PRC_CI_AS,要这么排,还没搞明白。
希望大家继续关注。
print 'true 1' -- printed for meif ('b01' collate Chinese_PRC_BIN > 'b-1' collate Chinese_PRC_BIN)
print 'true 2' -- printed for me