首先需要了解關于Unicode的知識,以下是百度百科對Unicode的解釋,
統一碼,也叫萬國碼、單一碼(Unicode)是計算機科學領域里的一項業界標準,包括字符集、編碼方案等,
Unicode 是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求,
說人話就是你用英文,我用中文,他用日文,但都想表示同一個東西,這時一個大哥站出來說:我來搞一個統一規則,以后你們都按照這個標準來,就不會發生跨平臺、跨語言時出錯的問題了,隨后將產生了Unicode字符集,
像這樣統一編碼,2個位元組就已經足夠容納世界上所有的語言的大部分文字了,現在用的是UCS-2,即2個位元組編碼,而UCS-4是為了防止將來2個位元組不夠用才開發的,
這里又得引入字符和位元組的知識,后面是菜鳥教程的簡介,鏈接:https://www.runoob.com/w3cnote/byte-character.html
一般在英文狀態下一個字母或字符占用一個位元組,一個漢字用兩個位元組表示,
Unicode 編碼中,一個英文為一個位元組,一個中文為兩個位元組所以
varchar(n)
長度為 n 個位元組的可變長度且非 Unicode 的字符資料,n 必須是一個介于 1 和 8,000 之間的數值,存盤大小為輸入資料的位元組的實際長度,而不是 n 個位元組,
nvarchar(n)
包含 n 個字符的可變長度 Unicode 字符資料,n 的值必須介于 1 與 4,000 之間,
具體存盤,看下面的實驗:
DECLARE
@Str_varchar AS VARCHAR(8000)
SET
@Str_varchar = '測驗ABC123'
SELECT
DATALENGTH(@Str_varchar) AS N'位元組個數' ,
LEN(@Str_varchar) AS N'字符數'
DECLARE
@Str_nvarchar AS NVARCHAR(4000)
SET
@Str_nvarchar = '測驗ABC123'
SELECT
DATALENGTH(@Str_nvarchar) AS N'位元組個數' ,
LEN(@Str_nvarchar) AS N'字符數'

結論:在開發中我更推薦使用Nvarchar
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/286099.html
標籤:SQL Server
