请问为什么我的sql server2005中区分大小写?不管是在存储过程中还是在sql查询语句中都区分大小写?谢谢!

2025-01-04 23:45:44
推荐回答(4个)
回答1:

默认情况下,SQL Server 里面是不区分大小写的:

E:\>sqlcmd -S "localhost\SQLEXPRESS"
1> use test
2> go
已将数据库上下文更改为 'Test'。

-- 建立一个 tab 的测试表, 表名称为全部小写
1> CREATE TABLE [tab] ( id int )
2> go

1> select * from tab
2> go
id
-----------

(0 行受影响)
1> select * from Tab
2> go
id
-----------

(0 行受影响)

上面可以看出,默认情况下,
select * from tab 与 select * from Tab 是一样的。
因为不区分大小写

下面设置 test 数据库,让其区分大小写
alter database test COLLATE Chinese_PRC_CS_AS

1> alter database test COLLATE Chinese_PRC_CS_AS
2> go

1> select * from tab
2> go
id
-----------

(0 行受影响)
1> select * from Tab
2> go
消息 208,级别 16,状态 1,服务器 WANGZHIQING\SQLEXPRESS,第 1 行
对象名 'Tab' 无效。

设置数据库区分大小写以后,可以看到
select * from Tab 的时候, SQL Server 无法识别 "Tab" 这个表了
因为区分大小写了。

下面恢复 test 数据库的设置,让其不区分大小写
alter database test COLLATE Chinese_PRC_CI_AS

1> select * from tab
2> go
id
-----------

(0 行受影响)
1> select * from Tab
2> go
id
-----------

(0 行受影响)

恩,一切又恢复正常了。

回答2:

这是因为数据库的排序规则设定的。
排序规则中CS表示区分大小写(Case-Sensitive), CI表示不区分大小写(Case-Insensitive)。
例如:
SQL_Latin1_General_CP1_CI_AS 不区分大小写
Latin1_General_CS_AS 区分大小写。

回答3:

SQL中默认不区分大小写的。

回答4:

正常的是区分大小写的 当你用UPPER函数 或LOWER函数时 就不分了