存储过程中变量大小写敏感的问题 declare @a varchar(20),@b varchar(20)select @a='ABC' ,@b='abc'if cast(@a as binary)<>cast(@b as binary) print '区分大小写' 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 create table test (a varchar(100))goinsert test values('aabb')goselect * from Test where a collate chinese_prc_CS_Ai ='AaBb'select * from test where a='AaBb' 具体情况是这样的,同样一个项目(包括数据库),在开发机器上运行正常,但在另外一台机器上却出现了类似大小写敏感的问题,即在存储过程里面,@IntTest 和 @intTest 被认为是不同的变量,经检查,发现出现问题机器的排序规则设置是正常的,那么,产生这一错误的原因可能会是什么呢? 再次检查,可以肯定是大小写敏感的问题,因为一旦将存储过程里面的变量写成一样(即统一成@IntTest),问题就不再出现了,但是数据库太庞大,之前是在没有考虑大小写敏感的情况下设计的,因此不可能一个一个地去检查和修改,希望可以进行一次性设置即可。 SQL和操作系统的补丁有没有打好?没打的话打一下补丁试试. 环境如下:1、应用程序平台:Windows Server2003 Web Edition(.NET Framework1.1).2、数据库平台:Windows2000, SQL Server2000. “发现出现问题机器的排序规则设置是正常的”是说为库为SQL Server 实例的默认排序规则,还是说库的排序规则与你的完全相同? “发现出现问题机器的排序规则设置是正常的”——既是SQL Server 实例的默认排序规则(即Chinese_PRC_CI_AS),也与先前那天机器的设置完全相同。 变量、GOTO 标签和临时表的标识符使用实例的默认排序规则,请检查实例级对象也就是存储过程所在库的排序规则。设置出现问题机器上你所使用库的默认排序规则应该可以一次性解决库中存储过程、函数的参数、用户定义数据类型和变量的大小写敏感问题。 我已按以下语句重新设置了一下,确认其排序规则应该是不会造成大小写敏感的Chinese_PRC_CI_AS,所以很可能不是这方面的问题。alter database DBName COLLATE Chinese_PRC_CI_AS 系统数据库(如master、model等)的默认排序规则确定也是Chinese_PRC_CI_AS 其实我已经设置过该数据库的排序规则:alter database DBName COLLATE Chinese_PRC_CI_AS,在这方面应该不会有什么问题的。 sql语句,如何某一字段值相同只取一条记录? sql查询疑问 请问如何查询出varchar字段中的非数字的结果集? select IIf(1>2,1,3)为什么错 图片存储问题? bcp工具能否导入UTF8格式的文本文件? 50RMB求高人解决MSSQL问题! sql server 数据库问题 SQL的变量生存期的问题, 警告:发现SQL server 2000的又一个BUG!!各位大哥发表高见!! 为什么用户查自己的表还要加前缀? 关于存储过程中间(update内型)如果传入变量和原来的值没有变化
go
insert test values('aabb')
go
select * from Test where a collate chinese_prc_CS_Ai ='AaBb'
select * from test where a='AaBb'
1、应用程序平台:Windows Server2003 Web Edition(.NET Framework1.1).
2、数据库平台:Windows2000, SQL Server2000.
alter database DBName COLLATE Chinese_PRC_CI_AS