本文介紹了在SQL Server中,何時(shí)必須使用NVARCHAR/NCHAR而不是VARCHAR/CHAR?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我們必須使用Unicode類(lèi)型時(shí)是否有規(guī)則?
我見(jiàn)過(guò)大多數(shù)歐洲語(yǔ)言(德語(yǔ)、意大利語(yǔ)、英語(yǔ)等)在同一數(shù)據(jù)庫(kù)中的VARCHAR列中都可以。
我正在尋找類(lèi)似的東西:
-
如果您有中文–>使用NVARCHAR
如果您有德語(yǔ)和阿拉伯語(yǔ)–>使用NVARCHAR
服務(wù)器/數(shù)據(jù)庫(kù)的排序規(guī)則如何?
我不想像這里建議的那樣使用Always NVARCHAR
What are the main performance differences between varchar and nvarchar SQL Server data types?
推薦答案
兩個(gè)支持率最高的答案都是錯(cuò)誤的。它不應(yīng)與存儲(chǔ)不同/多種語(yǔ)言&Quot;有關(guān)。支持?
、英文等西班牙語(yǔ)字符,僅支持常用的varchar
字段和Latin1_General_CI_AS
COLLATION
,如
簡(jiǎn)寫(xiě)版本
當(dāng)COLLATION
確定的ENCODING
不支持所需字符時(shí),請(qǐng)使用NVARCHAR
/NCHAR
。
此外,根據(jù)SQL Server的版本,您可以使用特定的COLLATIONs
,如從SQL Server 2019開(kāi)始提供的Latin1_General_100_CI_AS_SC_UTF8
。在VARCHAR
字段(或整個(gè)表/數(shù)據(jù)庫(kù))上設(shè)置此排序規(guī)則,將使用UTF-8
ENCODING
存儲(chǔ)和處理該字段上的數(shù)據(jù),從而完全支持UNICODE
字符,從而支持它所包含的任何語(yǔ)言。
要完全理解:
要完全理解我將要解釋的內(nèi)容,必須將UNICODE
、ENCODING
和COLLATION
的概念都非常清楚。如果您不知道,那么首先看一下我對(duì)什么是Unicode、編碼、排序規(guī)則和UTF-8的簡(jiǎn)單而簡(jiǎn)明的解釋?zhuān)约八鼈兪侨绾蜗嚓P(guān)的";一節(jié)和提供的文檔鏈接。此外,我在這里所說(shuō)的一切都是特定于Microsoft SQL Server
,以及它如何在char
/nchar
和varchar
/nvarchar
字段中存儲(chǔ)和處理數(shù)據(jù)。
假設(shè)我們想要在MSSQL Server數(shù)據(jù)庫(kù)上存儲(chǔ)一個(gè)特殊的文本。這可能是Instagram上的一條評(píng)論,因?yàn)槲蚁矚gStackoverflow!