SQL Server Collation的問題解決及特點分析
SQL Server Collation是本文我們主要要介紹的內(nèi)容,接下來我們從一個問題中去討論它的特點。在解PC-14070中,發(fā)現(xiàn)異常是因為表中已經(jīng)有列ROUTE_KEY,但在Migration的過程中又添加列route_key報錯(客戶用的是SQLServer):
Migrationto 9.1 fails "Column name 'ROUTE_KEY' in table 'DC_cs_AfterRework' isspecified more than once.
由此我我猜想客戶的數(shù)據(jù)庫是不區(qū)分大小寫的, 后來查詢了我們產(chǎn)品的DB的InstallationGuild, 發(fā)現(xiàn)FTPC標準的Collation是SQL_Latin1_General_CP850_BIN。
這種Collation有以下特點:
在對于表和列的創(chuàng)建和修改中,表名和列名是不區(qū)分大小寫的,即如果表中有一個列叫column,不能添加列COLUMN或Column;
對于表中的數(shù)據(jù)是區(qū)分大小寫的,比如有一個表中有列A作為主鍵,插入值value后仍然可以成功的插入值VALUE或Value;
但對于SQL語句中列名或是表名的指定又是區(qū)分大小寫的;
比如select * from ACCOUNT 和select* from account是不同的,后者在我們的產(chǎn)品的數(shù)據(jù)庫中運行時會報錯的。
不同的Collation有不同的特點,比如Latin1_General_CI_AS對于數(shù)據(jù)是不區(qū)分大小寫的,在主鍵列中不能同時存有大寫和小寫的值,但Latin1_General_100_CS_AI_KS卻可以;
比如Latin1_General_CI_AS對于列名是不區(qū)分大小寫的,同一表中不能同時存有大寫和小寫的值的列,但Latin1_General_100_CS_AI_KS卻可以;
Collation的后綴中含有_CI表示Case-insensitive; 如果Collation的后綴中含有_CS表示Case-sensitive。
關于SQL Server Collation的特點就介紹到這里了,希望本次的介紹能夠對您有所收獲!
【編輯推薦】