基于SQL Server中char,nchar,varchar,nvarchar的使用區(qū)別
對(duì)于程序中的一般字符串類型的字段,SQL Server中有char、varchar、nchar、nvarchar四種類型來對(duì)應(yīng),那么這四種類型有什么區(qū)別呢,這里做一下對(duì)比。
1.定長或變長
所謂定長就是長度固定,當(dāng)要保存的數(shù)據(jù)長度不夠時(shí)將自動(dòng)在其后面填充英文空格,使長度達(dá)到相應(yīng)的長度;有var前綴的,表示是實(shí)際存儲(chǔ)空間是動(dòng)態(tài)變化的,比如varchar,nvarchar變長字符數(shù)據(jù)則不會(huì)以空格填充。
2.Unicode或非Unicode
數(shù)據(jù)庫中,英文字符只需要一個(gè)字節(jié)存儲(chǔ)就足夠了,但漢字和其他眾多非英文字符,則需要兩個(gè)字節(jié)存儲(chǔ)。如果英文與漢字同時(shí)存在,由于占用空間數(shù)不同,容易造成混亂,導(dǎo)致讀取出來的字符串是亂碼。Unicode字符集就是為了解決字符集這種不兼容的問題而產(chǎn)生的,它所有的字符都用兩個(gè)字節(jié)表示,即英文字符也是用兩個(gè)字節(jié)表示。而前綴n就表示Unicode字符,比如nchar,nvarchar,這兩種類型使用了Unicode字符集。
3.幾種數(shù)據(jù)類型的存儲(chǔ)的最大容量
char,varchar 最多8000個(gè)英文,4000個(gè)漢字
nchar,nvarchar 最多可存儲(chǔ)4000個(gè)字符,無論英文還是漢字
--創(chuàng)建表
CREATE TABLE TempTable(
id INT PRIMARY KEY,
charField CHAR(10),
varcharField VARCHAR(10),
nvarcharField NVARCHAR(10)
)
INSERT INTO TempTable VALUES(1,'WFTH','WFTH','WFTH')
INSERT INTO TempTable VALUES(2,'無風(fēng)聽海','無風(fēng)聽海','無風(fēng)聽海')
INSERT INTO TempTable VALUES(3,'','','')
INSERT INTO TempTable(id) VALUES(4)
INSERT INTO TempTable VALUES(5,'1234567890','1234567890','12345')
SELECT DATALENGTH(charField) AS charFieldLen,
DATALENGTH(varcharField) AS varcharFieldLen,
DATALENGTH(nvarcharField) AS nvarcharFieldLen
FROM temptable WHERE id =1
SELECT DATALENGTH(charField) AS charFieldLen,
DATALENGTH(varcharField) AS varcharFieldLen,
DATALENGTH(nvarcharField) AS nvarcharFieldLen
FROM temptable WHERE id =2
SELECT DATALENGTH(charField) AS charFieldLen,
DATALENGTH(varcharField) AS varcharFieldLen,
DATALENGTH(nvarcharField) AS nvarcharFieldLen
FROM temptable WHERE id =3
SELECT DATALENGTH(charField) AS charFieldLen,
DATALENGTH(varcharField) AS varcharFieldLen,
DATALENGTH(nvarcharField) AS nvarcharFieldLen
FROM temptable WHERE id =4
SELECT DATALENGTH(charField) AS charFieldLen,charField,
DATALENGTH(varcharField) AS varcharFieldLen,varcharField,
DATALENGTH(nvarcharField) AS nvarcharFieldLen,nvarcharField
FROM temptable WHERE id =5
相關(guān)文章
SQL Server 2005 數(shù)據(jù)庫轉(zhuǎn) SQL Server 2000的方法小結(jié)
這篇文章主要介紹了SQL Server 2005 數(shù)據(jù)庫轉(zhuǎn) SQL Server 2000的方法,需要的朋友可以參考下2014-04-04SQL Server 2012 多表連接查詢功能實(shí)例代碼
這篇文章主要介紹了SQL Server 2012 多表連接查詢功能實(shí)例代碼,需要的朋友可以參考下2017-01-01Spark SQL 中對(duì) Map 類型的操作函數(shù)示例詳解
這篇文章主要介紹了SparkSQL中對(duì)Map類型的操作函數(shù),包括創(chuàng)建、訪問、修改、合并、鍵值操作等功能,通過這些函數(shù),可以方便地進(jìn)行復(fù)雜鍵值對(duì)數(shù)據(jù)的處理,感興趣的朋友跟隨小編一起看看吧2025-01-01sqlserver 2000 遠(yuǎn)程連接 服務(wù)器的解決方案
在連接本地服務(wù)器時(shí),通常使用的是命名管道協(xié)議(在服務(wù)器網(wǎng)絡(luò)實(shí)用工具里可以看到啟用的協(xié)議有這個(gè)2009-06-06SQL?Server實(shí)現(xiàn)group_concat功能的詳細(xì)實(shí)例
group_concat函數(shù)能將相同的行組合起來,下面這篇文章主要給大家介紹了關(guān)于SQL?Server實(shí)現(xiàn)group_concat功能的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08安裝sql server2008后再安裝sql 2005找不到本地服務(wù)器的解決方法
這篇文章主要介紹了安裝sql server2008后再安裝sql 2005找不到本地服務(wù)器的解決方法,需要的朋友可以參考下2015-01-01Sql Server數(shù)據(jù)庫常用Transact-SQL腳本(推薦)
Transact-SQL(又稱 T-SQL),是在 Microsoft SQL Server 和 Sybase SQL Server 上的 ANSI SQL 實(shí)現(xiàn),這篇文章主要介紹了Sql Server數(shù)據(jù)庫常用Transact-SQL腳本,需要的朋友可以參考下2019-12-12