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