爲了擴大對@馬丁的回答是:
您在SQL Server中如何設置 「字符集」 取決於你所使用的數據類型。如果您正在使用:
NVARCHAR
,NCHAR
和NTEXT
(NTEXT
已被棄用,不應該被用來作爲的SQL Server 2005)都使用Unicode字符集,這不能被改變。這些數據類型全部編碼爲UTF-16 LE(Little Endian)– 16位編碼,每個「字符」爲2或4字節–,這也不能改變。對於這些數據類型,正在使用的排序規則僅影響區域設置(由Collation的LCID確定),它確定用於排序和比較的規則集。
XML
,像N
-prefixed類型,使用Unicode字符集和被編碼爲UTF-16 LE(小端),和既不那些可以改變。但與其他字符串數據類型不同,沒有與XML
數據關聯的歸類,因爲它不能被排序或比較(至少先不將其轉換爲NVARCHAR(MAX)
[首選]或VARCHAR(MAX)
)。
VARCHAR
,CHAR
,和TEXT
(TEXT
已被廢棄,不應該被用作的SQL Server 2005)都爲8位編碼,每個「字」是1或2個字節。字符集由與每個歸類關聯的代碼頁確定。的排序和比較規則取決於整理的類型使用:
- SQL Server排序規則:這些都開始
SQL_
名稱和自SQL Server 2000中已被否決,雖然是(不幸)仍被廣泛使用的今天。這些使用簡單規則,如sys.fn_helpcollations()
返回的description
字段中所示的「SQL Server排序順序」編號。
- 窗口排序規則:這些都有名字,做不是開始於
SQL_
。這些排序規則允許非Unicode字符串數據使用排序規則的LCID指示的Unicode排序和比較規則。
話雖這麼說,找出哪些字符集(CHAR
,VARCHAR
和TEXT
–即非Unicode –數據)正在被使用,運行下面的查詢,並密切關注CodePage
領域。該LCID
字段表示用於排序和比較規則爲N
-prefixed –即統一–類型以及非Unicode類型如果使用Windows排序規則的語言環境:
SELECT *,
COLLATIONPROPERTY(col.[name], 'CodePage') AS [CodePage],
COLLATIONPROPERTY(col.[name], 'LCID') AS [LCID]
FROM sys.fn_helpcollations() col
ORDER BY col.[name];
代碼頁ID可以通過Code Page Identifiers的MSDN頁面翻譯成更有意義的內容。
關於O.P.上@的comment馬丁的回答是:
不幸的是,他們選擇了誤導性/不完整的術語「整理」,這顯然是指排序順序:整理定義。
儘管微軟在選擇名稱時可以做得更好,但不幸的是,在諸如「編碼」,「字符集」,「整理」等術語方面存在一般性的,整個行業的混淆。微軟對「整理」的使用(或濫用)僅僅造成了大規模混亂。但是,由於「utf8」具體是而不是字符集,所以在MySQL中這種混淆也很明顯.--)。
UTF-8是Unicode字符集的幾種編碼之一。另外兩種編碼是UTF-16和UTF-32。所有這三種編碼都以不同的方式表示完全相同的Unicode字符集。查看MySQL字符集列表– 11.1.10 Supported Character Sets and Collations –「ucs2」,「utf8」,「utf8mb4」,「utf16」,「utf16le」,「utf32」字符集實際上並不是字符集,而是各種表示形式的字符集Unicode字符集。但是,鑑於「字符集」和「編碼」這兩個概念之間的重疊,難以避免混淆。11.1.10.1 Unicode Character Sets頁面指示「utf8mb4」,「utf16」,「utf16le」和「utf32」字符集是完整的Unicode字符集,而「ucs2」和「utf8」是Unicode字符集的子集,特別是第65,536個代碼點(又稱Basic Multilingual Plane(BMP))。
有關跨各種RDBMS的排序規則的詳細信息,請參閱我的回答下面的問題上DBA.StackExchange:
Does any DBMS have a collation that is both case-sensitive and accent-insensitive?
他們是在SQL Server同樣的事情。通過在'varchar'列上設置排序規則,您還可以設置代碼頁。 –
謝謝Martin。記錄在哪裏?當然,我通過精細的手冊(MSDN在線),但我沒有看到它。 – dotancohen
排序規則控制SQL Server中字符串的物理存儲。排序規則指定[** both **]代表每個字符的位模式**和**字符排序和比較的規則。 [鏈接](http://msdn.microsoft.com/en-us/library/ms186356.aspx) –