字符串的比较不是通过ASCII码来比较的吗?
为什么SQL语句里小于"AA{"的过滤条件不能把"AAA"的数据过滤出来,其中, "{"的ASCII比"A"大。
对数据库有研究的大神望多多指点。

解决方案 »

  1.   

    不是通过ascii码的,除非你显式指定了ASCII(字符串),这样才会使用,或者你的排序规则里面指定了,否则会按你本地的排序规则来对比大小。
      

  2.   


    --可以呀
    if 'AA{'>'AAA'
    print '正常'
    else
    print '不正常'
      

  3.   

    SELECT ASCII('AA{'),ASCII('AAA')
     /*
                 
     ----------- -----------
     65          65
     
     (1 行受影响)
     
     */
    两个ascii码一样大
      

  4.   

    SELECT ASCII('{'),ASCII('A')
      

  5.   

    if 'AA{'>'AAA' COLLATE Chinese_PRC_BIN
    print N'正常'
    else
    print N'不正常'排序规则改为二进制
      

  6.   

    这样:
    if convert(binary,'AA{') > convert(binary,'AAA') 
    print 'OK'
    else
    print 'NO OK'
      

  7.   

    -- Show Chinese
    if 'AA{'>'AAA' COLLATE Chinese_PRC_BIN
    print N'正常'
    else
    print N'不正常' -- Default
    if 'AA{'>'AAA'
    print 'a'
    else
    print 'b'
    Messages
    正常
    b我的结果为什么中文和英文不同???
      

  8.   

    因为你下面那个也要加上COLLATE Chinese_PRC_BIN