MSSERVER安装时默认大小写不敏感SELECT * FROM TAB WHERE NAME='ABC' AND ASCII(NAME)=ASCII('ABC')

解决方案 »

  1.   

    SELECT *
    FROM tab
    WHERE CONTAINS(name, ' "ABC" ')
      

  2.   

    几种方法:
    1、select * from tab 
    where binary_checksum(name)=binary_checksum('ABCDE')
    2、select * from tab 
    where  name COLLATE SQL_Latin1_General_CP1_CS_AS ='ABCDE'
    3、select * from tab
    where cast(name as varbinary(10))=cast('ABCDE' as varbinary(10))
      

  3.   

    cobi(我是小新):没有建全文索引时,不能用CONTAINS的。
      

  4.   

    我得答案错误,不要用!!!
    能返回,“Abc”,"ABc"
      

  5.   

    SELECT * FROM TAB WHERE UPPER(NAME) = 'ABC'
      

  6.   

    SELECT *
    FROM TAB WHERE (ASCII(SUBSTRING(NAME, 1, 1)) = ASCII('A')) AND (ASCII(SUBSTRING(NAME, 2, 1)) 
          = ASCII('B')) AND (ASCII(SUBSTRING(NAME, 3, 1)) = ASCII('C'))
      

  7.   

    在 SQL Server 2K 中实现 大小写敏感的查询...  
    http://www.csdn.net/Develop/read_article.asp?id=13150
      

  8.   

    playyuer(小干部儿) 那个方法也是逐字符比较的。可能没有简单的方法了。
      

  9.   

    playyuer(小干部儿) :不需要这样复杂吧?
    :)
      

  10.   

    如果你的数据库中记录的数据全部需要区分大小写,那么你改变数据库参数,让数据库区分大小写就可以了,SQL默认的配置是不区分大小写的。
      

  11.   

    没想到有这么多哥们帮助,真是太谢谢了。
    问题已经得到解决了,我的方法是:把你想检索的列的排列规则改为:Chinese_PRC_CS_AS
      

  12.   

    icevi(按钮工厂):请问一下!
    在“select * from tab 
    where  name COLLATE SQL_Latin1_General_CP1_CS_AS ='ABCDE'”中的
     "COLLATE SQL_Latin1_General_CP1_CS_AS "是什么意思?
    谢谢!
      

  13.   

    icevi(按钮工厂):请问一下!
    在“select * from tab 
    where  name COLLATE SQL_Latin1_General_CP1_CS_AS ='ABCDE'”中的
     "COLLATE SQL_Latin1_General_CP1_CS_AS "是什么意思?
    谢谢!
      

  14.   

    to JJ:
    µÚÈýÖÖ·½·¨ºÃÏó²»Ðеģ¿
      

  15.   

    sorry,
    but i think the third solution can't work.
    try this:select * from sysobjects where name COLLATE SQL_Latin1_General_CP1_CS_AS ='sysobjects'select * from sysobjects
    where cast(name as varbinary(10))=cast('sysobjects' as varbinary(10))
      

  16.   

    Tongls(JackieTong):COLLATE SQL_Latin1_General_CP1_CS_AS 是指在这个语句里不管数据库或字段的排序规则,强制按:
       SQL_Latin1_General-CP1:英语字符集 代码页1252
       CS:区分大小写
       AS:区分重音
    来进行排序。x_zing(阿浩) :
    对系统表这个函数不起作用,你可以看一下,sysobjects表中name字段的数据类型是sysname,而不是varchar/char/nvarchar,所以不能这样用,我不知道这个sysname字段类型是怎么回事,你用以下语句可以发现用它做cast的效果:
    select cast(name as varbinary(2000)),cast('sysobjects' as varbinary(2000)) from sysobjects where name='sysobjects'结果:
    0x7300790073006F0062006A006500630074007300 
    0x7379736F626A65637473显示结果是不同的。所以这种方法不能用在这个字段上,用在varchar/char/nvarchar上就不会有问题。