基于SQL Server中char,nchar,varchar,nvarchar的使用區(qū)別_Mssql數(shù)據(jù)庫教程
推薦:sql to sqlalchemy 轉(zhuǎn)換的小例子sql to sqlalchemy 轉(zhuǎn)換的小例子,需要的朋友可以參考一下
對于程序中的一般字符串類型的字段,SQL Server中有char、varchar、nchar、nvarchar四種類型來對應(yīng),那么這四種類型有什么區(qū)別呢,這里做一下對比。
1.定長或變長
所謂定長就是長度固定,當(dāng)要保存的數(shù)據(jù)長度不夠時將自動在其后面填充英文空格,使長度達(dá)到相應(yīng)的長度;有var前綴的,表示是實際存儲空間是動態(tài)變化的,比如varchar,nvarchar變長字符數(shù)據(jù)則不會以空格填充。
2.Unicode或非Unicode
數(shù)據(jù)庫中,英文字符只需要一個字節(jié)存儲就足夠了,但漢字和其他眾多非英文字符,則需要兩個字節(jié)存儲。如果英文與漢字同時存在,由于占用空間數(shù)不同,容易造成混亂,導(dǎo)致讀取出來的字符串是亂碼。Unicode字符集就是為了解決字符集這種不兼容的問題而產(chǎn)生的,它所有的字符都用兩個字節(jié)表示,即英文字符也是用兩個字節(jié)表示。而前綴n就表示Unicode字符,比如nchar,nvarchar,這兩種類型使用了Unicode字符集。
3.幾種數(shù)據(jù)類型的存儲的最大容量
char,varchar 最多8000個英文,4000個漢字
nchar,nvarchar 最多可存儲4000個字符,無論英文還是漢字
--創(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

分享:SQL有外連接的時候注意過濾條件位置否則會導(dǎo)致網(wǎng)頁慢這個SQL之所以跑得慢是因為開發(fā)人員把SQL的條件寫錯位置了 正確的寫法應(yīng)該是下面這樣的,感興趣的朋友可以參考下
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 大內(nèi)存SQL Server數(shù)據(jù)庫的加速劑
- 如何在SQL Server2005中還原數(shù)據(jù)庫
- 循序漸進講解數(shù)據(jù)表的十二個設(shè)計原則
- SQL Server 2008網(wǎng)絡(luò)協(xié)議深入理解
- 如何將SQL Server中的表變成txt 文件
- SQL Server 2008中的新日期數(shù)據(jù)類型
- 解讀為SQL Server數(shù)據(jù)庫傳數(shù)組參數(shù)的變通辦法
- 獲得SQL Server 2005中所有存儲過程的方法
- 解讀SQL查詢結(jié)果集對注入的影響及利用
- 淺談SQL Server數(shù)據(jù)倉庫相關(guān)概念及構(gòu)建流程
猜你也喜歡看這些
- 深入探討:MySQL數(shù)據(jù)庫MyISAM與InnoDB存儲引擎的比較
- 解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別
- MySQL中優(yōu)化sql語句查詢常用的30種方法
- mysql常用設(shè)置:字符集編碼、自動完成(自動提示)、監(jiān)聽外網(wǎng)ip
- 怎么重置mysql的自增列AUTO_INCREMENT初時值
- 基于mysql查詢語句的使用詳解
- 用MyEclipse配置DataBase Explorer(圖示)
- Ubuntu下取消MySQL數(shù)據(jù)庫本機綁定限制方法
- 從mysql中導(dǎo)出單個表結(jié)構(gòu)和數(shù)據(jù)
- MySQL筆記之?dāng)?shù)據(jù)備份與還原的使用詳解
- 相關(guān)鏈接:
復(fù)制本頁鏈接| 搜索基于SQL Server中char,nchar,varchar,nvarchar的使用區(qū)別
- 教程說明:
Mssql數(shù)據(jù)庫教程-基于SQL Server中char,nchar,varchar,nvarchar的使用區(qū)別
。