SQL Server 2005數(shù)據(jù)庫的排序規(guī)則相關(guān)知識(shí)介紹
SQL Server 2005數(shù)據(jù)庫的排序規(guī)則相關(guān)知識(shí)是本文我們主要要介紹的內(nèi)容,介紹之前我們先看一個(gè)SQL Server 2005無法顯示中文的問題,如下:通過SSMS向SQL Server 2005中插入中文數(shù)據(jù)后,查詢出來的結(jié)果是???,根本就不顯示中文。用圖形化和Insert語句后結(jié)果也是一樣,使用查詢分析器操作,情況也是如此。
在排除了錄入有誤的情況外,剩下可以解釋的就是SQL Server的排序規(guī)則了。朋友在SQLSEVER2005中使用的排序規(guī)則是SQL_Latin1_General_CP1_CI_AS,而不是可以正確顯示簡體漢字的三種排序規(guī)則:Chinese_PRC_BIN,Chinese_PRC_CI_AS,Chinese_PRC_CS_AS
在將SQL Server 2005中將排序規(guī)則改成Chinese_PRC_CI_AS,問題解決。
MS對(duì)排序規(guī)則的描述:"在 Microsoft SQL Server 2000 中,字符串的物理存儲(chǔ)由排序規(guī)則控制。排序規(guī)則指定表示每個(gè)字符的位模式以及存儲(chǔ)和比較字符所使用的規(guī)則。"也就是說,在SQL Server中,排序規(guī)則實(shí)際上就是字符編碼。
在查詢分析器內(nèi)執(zhí)行下面語句,可以得到SQL Server支持的所有排序規(guī)則。
- select * from ::fn_helpcollations()
排序規(guī)則名稱由兩部份構(gòu)成,前半部份是指本排序規(guī)則所支持的字符集。如:Chinese_PRC_CS_AI_WS 。前半部份:指UNICODE字符集,Chinese_PRC_指針對(duì)大陸簡體字UNICODE的排序規(guī)則。
排序規(guī)則的后半部份即后綴含義:
_BIN 二進(jìn)制排序
_CI(CS) 是否區(qū)分大小寫,CI不區(qū)分,CS區(qū)分
_AI(AS) 是否區(qū)分重音,AI不區(qū)分,AS區(qū)分
_KI(KS) 是否區(qū)分假名類型,KI不區(qū)分,KS區(qū)分
_WI(WS) 是否區(qū)分寬度 WI不區(qū)分,WS區(qū)分
區(qū)分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請(qǐng)選擇該選項(xiàng)。
區(qū)分重音:如果想讓比較將重音和非重音字母視為不等,請(qǐng)選擇該選項(xiàng)。如果選擇該選項(xiàng),比較還將重音不同的字母視為不等。
區(qū)分假名:如果想讓比較將片假名和平假名日語音節(jié)視為不等,請(qǐng)選擇該選項(xiàng)。
區(qū)分寬度:如果想讓比較將半角字符和全角字符視為不等,請(qǐng)選擇該選項(xiàng)
結(jié)論:
一:對(duì)于存在漢字顯示??,同時(shí)又不想更改數(shù)據(jù)庫上的排序規(guī)則,又想要正確顯示出漢字的話,建議在設(shè)計(jì)時(shí)全部使用Unicode類型字段,也就是那些以N開頭的字段類型,比如nChar,nVarchar,才可以正確顯示漢字。
二:如果不想更改排序規(guī)則,又不想更改字段類型,那么就要更改SQL語句,對(duì)于所有的漢字,前面也要加上N才可以正確顯示。具體的方法請(qǐng)參考下面兩條語句:
查詢:select * from tb_Cust where FirstName=N'汪'
插入:insert tb_Cust(FirstName,LastName,Sex) values(N'汪',N'鑫昊',N'男')
關(guān)于SQL Server 2005數(shù)據(jù)庫的排序規(guī)則相關(guān)知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!
【編輯推薦】






