我要select * from table1 where name = 'ABC'
而不选出name为abc,或是Abc的数据,在查询时要怎么限制条件?
就是数据内容区分大小写

解决方案 »

  1.   

    select * from table1 where Upper(name)<>'ABC'
      

  2.   

    --如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了 --示例 
    create table tb(a varchar(20) collate Chinese_PRC_CS_AS_WS) 
    insert tb values('Abac') select replace(a,'a','test') from tbdrop table tb
      

  3.   

    select * from table1 where name = 'ABC'这语句你能选出'abc'或者'Abc'的数据??
      

  4.   

    Anhowe(寒冰) ( ) 信誉:98  2006-06-30 14:29:00  得分: 0  
     
     
       --如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了 --示例 
    create table tb(a varchar(20) collate Chinese_PRC_CS_AS_WS) 
    insert tb values('Abac') select replace(a,'a','test') from tbdrop table tb
      
     
    正解。用排序规则就可以了,很多种排序规则都是区分大小写的。还有binnary,asc等等。这些规则名的具体写法参照手册。
      

  5.   

    如果你只是目前查询区分,那么还是不要这样改,免得又反悔,如此查询:
    select * from a 
    /*
    a_nam      a_add      
    ---------- ---------- 
    1          aa
    1          bb
    2          cc
    2          vv
    2          kk
    3          dd
    3          ee
    4          dd
    5          ee
    6          yy
    6          yy(11 row(s) affected)
    */
    现在我们查询a_add = 'aa'的,'Aa'等等不行!
    Example 1:select * from a 
    where a_add collate Chinese_PRC_CS_AS_WS = 'aa' 
    /*
    a_nam      a_add      
    ---------- ---------- 
    1          aa(1 row(s) affected)
    */Example 2:select * from a 
    where a_add collate Chinese_PRC_CS_AS_WS = 'Aa' 
    /*
    a_nam      a_add      
    ---------- ---------- (0 row(s) affected)
    */方法三.上面的记不住,那么就用最笨的方法,转化为ascii
    select * from a
    where 
    ascii(substring(a_add,1,1)) = ascii(substring('Aa',1,1))
    and 
    ascii(substring(a_add,2,1)) = ascii(substring('Aa',2,1))
    /*
    a_nam      a_add      
    ---------- ---------- (0 row(s) affected)
    */