近日項目中需要從遠程服務端下載數據,但是數據有個特點是區分大小寫的,所以和我們項目本身上存在衝突,因此做了個實例來研究一下mssql的大小寫問題。
創建表並查看加入數據的情況
--1·情況:不區分大小寫的情況
if exists (select 1 from sysobjects where name='qufen' and type='U')
drop table qufen
go
--創建表 並添加主鍵
CREATE TABLE qufen(
[daxiaoxie] [nchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL
CONSTRAINT [PK_qufen] PRIMARY KEY CLUSTERED
(
[daxiaoxie] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
--刪除表內數據
delete from qufen
--加入測試用的數據
insert into qufen values('a');
insert into qufen values('A');
結果爲
-----------------------------------------------------------------------------------
(0 行受影響)
(1 行受影響)
消息 2627,級別 14,狀態 1,第 13 行
違反了 PRIMARY KEY 約束 'PK_qufen'。不能在對象 'dbo.qufen' 中插入重複鍵。
語句已終止。
select * from ::fn_helpcollations()
排序規則名稱由兩部份構成,前半部份是指本排序規則所支持的字符集。
Chinese_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chinese_PRC_指針對大陸簡體字UNICODE的排序規則。
排序規則的後半部份即後綴 含義:
_BIN 二進制排序
_CI(CS) 是否區分大小寫,CI不區分,CS區分
_AI(AS) 是否區分重音,AI不區分,AS區分
_KI(KS) 是否區分假名類型,KI不區分,KS區分
_WI(WS) 是否區分寬度 WI不區分,WS區分
區分大小寫:如果想讓比較將大寫字母和小寫字母視爲不等,請選擇該選項。
區分重音:如果想讓比較將重音和非重音字母視爲不等,請選擇該選項。如果選擇該選項,比較還將重音不同的字母視爲不等。
區分假名:如果想讓比較將片假名和平假名日語音節視爲不等,請選擇該選項。
區分寬度:如果想讓比較將半角字符和全角字符視爲不等,請選擇該選項