sql语句区分大小写,怎么办?

时间:2022-06-01 16:32:19
数据库在安装时选择的是二进制,是区分大小写的,建立数据库时选择的排序规则是:Chinese_PRC_CS_AI,但之前写的一段sql代码不规范,没有注意大小写的问题,结果现在一放到分析器中执行就执行不了,请问高手有何办法解决?如这样的代码就执行不了:
DECLARE @T VARCHAR(20) 
SET @T='TEST'
INSERT INTO T1 (C1) VALUES (@t)
执行时就报请先申明变量@t
现在想不改变数据库排序规则,怎么样让这段代码执行通过。

9 个解决方案

#1



--> 创建表,插入数据:

declare @maco table (number int,myvalue varchar(2))

insert into @maco select 1,'aa' union all

select 2,'Aa' union all

select 3,'aA' union all

select 4,'AA'

--不区分大小写

select * from @maco WHERE nn='aa'

--区分大小写

select  * from @maco WHERE nn='aa' collate Chinese_PRC_CS_AI

#2


谢谢回复!我说的不是数据的大小写,而是代码的大小写会区分

#3


MSSQL代码不区分大小写.

#4


你的数据库设置的是区分大小写的。

DECLARE @T VARCHAR(20) 
SET @T='TEST'
INSERT INTO T1 (C1) VALUES (@t)


这里的@T和@t是不同的。改为相同的就可以了。

#5


楼主代码中还有半个括号是全角的。

#6


重新安装SQL SERVER选为Chinese_PRC_CI_AI,新增数据库,把旧数据库导入到新数据库;
虽然MASTER数据库可以重新构建成新的语序规则,不过还不如重新安装来的方便和快捷

#7


谢谢各位的回复!对于各位的回复有几点说明:1、我的数据库必须装成二进制的,不然有些程序功能不能用;2、即使重装数据库,我也只能装成二进制的;3、举例只是部分代码,还有大量的代码因为当时写得不规范,没注意代码的大小写,没办法改成一致的,工作量太大了;4、至于例子中的全角括号,不好意思,打错了:)

#8


Chinese_PRC_指针对大陆简体字UNICODE的排序规则。

排序规则的后半部份(即后缀)含义:

_BIN 二进制排序_CI(CS) 是否区分大小写:CI不区分,CS区分

_AI(AS) 是否区分重音:AI不区分,AS区分   

_KI(KS) 是否区分假名类型:KI不区分,KS区分 

_WI(WS) 是否区分宽度:WI不区分,WS区分

只能修改规则了,因为你说的是大量不规范。

#9


区分大小写:select * from table where col='semye' collate Chinese_PRC_CS_AI

不区分大小写:select * from table where col='semye' collate Chinese_PRC_CI_AI

#1



--> 创建表,插入数据:

declare @maco table (number int,myvalue varchar(2))

insert into @maco select 1,'aa' union all

select 2,'Aa' union all

select 3,'aA' union all

select 4,'AA'

--不区分大小写

select * from @maco WHERE nn='aa'

--区分大小写

select  * from @maco WHERE nn='aa' collate Chinese_PRC_CS_AI

#2


谢谢回复!我说的不是数据的大小写,而是代码的大小写会区分

#3


MSSQL代码不区分大小写.

#4


你的数据库设置的是区分大小写的。

DECLARE @T VARCHAR(20) 
SET @T='TEST'
INSERT INTO T1 (C1) VALUES (@t)


这里的@T和@t是不同的。改为相同的就可以了。

#5


楼主代码中还有半个括号是全角的。

#6


重新安装SQL SERVER选为Chinese_PRC_CI_AI,新增数据库,把旧数据库导入到新数据库;
虽然MASTER数据库可以重新构建成新的语序规则,不过还不如重新安装来的方便和快捷

#7


谢谢各位的回复!对于各位的回复有几点说明:1、我的数据库必须装成二进制的,不然有些程序功能不能用;2、即使重装数据库,我也只能装成二进制的;3、举例只是部分代码,还有大量的代码因为当时写得不规范,没注意代码的大小写,没办法改成一致的,工作量太大了;4、至于例子中的全角括号,不好意思,打错了:)

#8


Chinese_PRC_指针对大陆简体字UNICODE的排序规则。

排序规则的后半部份(即后缀)含义:

_BIN 二进制排序_CI(CS) 是否区分大小写:CI不区分,CS区分

_AI(AS) 是否区分重音:AI不区分,AS区分   

_KI(KS) 是否区分假名类型:KI不区分,KS区分 

_WI(WS) 是否区分宽度:WI不区分,WS区分

只能修改规则了,因为你说的是大量不规范。

#9


区分大小写:select * from table where col='semye' collate Chinese_PRC_CS_AI

不区分大小写:select * from table where col='semye' collate Chinese_PRC_CI_AI