if ('b0'<'b-')
print '1'if ('b099999'<'b-99999')
print '1'
为什么两个判断的结果会不一样?

解决方案 »

  1.   

    感觉好象'b-'中的'-'号当作运算符一样.你试试这个比较的时候就结果一样if ('b0000000'<'b-000000') 要是添加的数不是0的话,就结果相反了.
    还有就是当你把'b-'换成'b_'时,结果也是正确的....所以很有可能是'-'在作怪.只是猜测,等高人来解答.
      

  2.   

    我用了SOUNDEX與DIFFERENCE來作測試,結果竟然是一樣
      

  3.   

    感谢大家的关注,我试了一下,感觉是和排序规则有关系的。
    我做了下面的实验,我的数据库默认的排序规则是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,要这么排,还没搞明白。
    希望大家继续关注。
      

  4.   

    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
      

  5.   

    -在比较大小时相当于没有这个字符,原因不明,如a-与a是相当的,a-----0与a-0也是相当的