declare @a varchar(20),@b varchar(20)
select @a='ABC' ,@b='abc'
if cast(@a as binary)<>cast(@b as binary)
   print '区分大小写'

解决方案 »

  1.   

    create table test (a varchar(100))
    go
    insert test values('aabb')
    go
    select * from Test where a collate chinese_prc_CS_Ai ='AaBb'
    select * from test where a='AaBb'
      

  2.   

    具体情况是这样的,同样一个项目(包括数据库),在开发机器上运行正常,但在另外一台机器上却出现了类似大小写敏感的问题,即在存储过程里面,@IntTest 和 @intTest 被认为是不同的变量,经检查,发现出现问题机器的排序规则设置是正常的,那么,产生这一错误的原因可能会是什么呢?
      

  3.   

    再次检查,可以肯定是大小写敏感的问题,因为一旦将存储过程里面的变量写成一样(即统一成@IntTest),问题就不再出现了,但是数据库太庞大,之前是在没有考虑大小写敏感的情况下设计的,因此不可能一个一个地去检查和修改,希望可以进行一次性设置即可。
      

  4.   

    SQL和操作系统的补丁有没有打好?没打的话打一下补丁试试.
      

  5.   

    环境如下:
    1、应用程序平台:Windows Server2003 Web Edition(.NET Framework1.1).
    2、数据库平台:Windows2000, SQL Server2000.
      

  6.   

    “发现出现问题机器的排序规则设置是正常的”是说为库为SQL Server 实例的默认排序规则,还是说库的排序规则与你的完全相同?
      

  7.   

    “发现出现问题机器的排序规则设置是正常的”——既是SQL Server 实例的默认排序规则(即Chinese_PRC_CI_AS),也与先前那天机器的设置完全相同。
      

  8.   

    变量、GOTO 标签和临时表的标识符使用实例的默认排序规则,请检查实例级对象也就是存储过程所在库的排序规则。设置出现问题机器上你所使用库的默认排序规则应该可以一次性解决库中存储过程、函数的参数、用户定义数据类型和变量的大小写敏感问题。
      

  9.   

    我已按以下语句重新设置了一下,确认其排序规则应该是不会造成大小写敏感的Chinese_PRC_CI_AS,所以很可能不是这方面的问题。
    alter database DBName COLLATE Chinese_PRC_CI_AS
      

  10.   

    系统数据库(如master、model等)的默认排序规则确定也是Chinese_PRC_CI_AS
      

  11.   

    其实我已经设置过该数据库的排序规则:alter database DBName COLLATE Chinese_PRC_CI_AS,在这方面应该不会有什么问题的。