开发中常用的数据库有Oracle和Sql Server,Oracle数据库在查询的时候是有大小写区分的,而Sql Server数据库则不区分大小写,如何使Sql Server数据库在查询时有大小写的区分呢?下面我们就来总结一下:
要想设置Sql Server数据库区分大小写问题,首先要知道四个属性:
创建时可以使用:
COLLATE Chinese_PRC_CI_AS 不区分大小写(默认)
COLLATE Chinese_PRC_CS_AS 区分大小写
查询时可以使用:
COLLATE Chinese_PRC_CI_AI 不区分大小写(默认)
COLLATE Chinese_PRC_CS_AI 区分大小写
设置Sql Server数据库区分大小写的方法:
1、在新建数据库时设置其大小写区分
CREATE DATABASE DBTEST COLLATE CHINESE_PRC_CS_AS
2、如果你在创建数据库时没有设置大小写区分,可以修改数据库
ALTER DATABASE DBTEST COLLATE CHINESE_PRC_CS_AS
3、为某一张表的某一列设置区分大小写
CREATE TABLE T_USER(
USERID INT PRIMARY KEY,
USERNAME VARCHAR(20) COLLATE CHINESE_PRC_CS_AS,
PASSWORD VARCHAR(20) COLLATE CHINESE_PRC_CS_AS
)
4、如果你在创建表时没有设置大小写区分,可以修改表
ALTER TABLE T_USER
ALTER COLUMN USERNAME NVARCHAR(20) COLLATE CHINESE_PRC_CS_AS
5、如果你在创建数据库或创建表时没有设置其大小写区分,又想在Sql Server查询时使其区分大小写,可以使用下面的方法实现,加上CHINESE_PRC_CS_AS_WS属性之后,查询的结果就会根据查询条件进行严格匹配
SELECT * FROM T_USER
WHERE USERNAME COLLATE Chinese_PRC_CS_AI = 'user1'
SELECT * FROM T_USER
WHERE USERNAME COLLATE Chinese_PRC_CS_AI LIKE 'us%'
6、如果你原来创建数据库或表时设置了区分大小写的功能,现在查询时,又不想其区分大小写了,可以在查询中加上Chinese_PRC_CI_AS属性,这样查询结果就不会大小写严格匹配
SELECT * FROM T_USER
WHERE USERNAME COLLATE Chinese_PRC_CI_AI = 'user1'
SELECT * FROM T_USER
WHERE USERNAME COLLATE Chinese_PRC_CI_AI LIKE 'us%'
7、区分全角半角的属性
区分全角半角
Chinese_PRC_CI_AS_WS 区分全角半角
区分大小写和全角半角
Chinese_PRC_CS_AS_WS 区分大小写和全角半角
建议:在创建数据库或表时,不要设置其区分大小写,不建议使用1、2、3、4的方法,建议在查询的时候使用Chinese_PRC_CS_AI属性或Chinese_PRC_CI_AI属性,也就是这样方便快捷。