SQL2005中char nchar varchar nvarchar數(shù)據(jù)類型的區(qū)別和使用環(huán)境講解
現(xiàn)在就摘錄一下sql2005聯(lián)機(jī)叢書里的關(guān)于這幾個(gè)數(shù)據(jù)類型的解釋
字符數(shù)據(jù)類型(nchar 長(zhǎng)度固定,nvarchar 長(zhǎng)度可變)和 Unicode 數(shù)據(jù)使用 UNICODE UCS-2 字符集。
nchar [ ( n ) ]
n 個(gè)字符的固定長(zhǎng)度的 Unicode 字符數(shù)據(jù)。n 值必須在 1 到 4,000 之間(含)。存儲(chǔ)大小為兩倍 n 字節(jié)。nchar 的 SQL-2003 同義詞為 national char 和 national character。
nvarchar [ ( n | max ) ]
可變長(zhǎng)度 Unicode 字符數(shù)據(jù)。n 值在 1 到 4,000 之間(含)。max 指示最大存儲(chǔ)大小為 2^31-1 字節(jié)。存儲(chǔ)大小是所輸入字符個(gè)數(shù)的兩倍 + 2 個(gè)字節(jié)。所輸入數(shù)據(jù)的長(zhǎng)度可以為 0 個(gè)字符。nvarchar 的 SQL-2003 同義詞為 national char varying 和 national character varying。
備注 如果沒(méi)有在數(shù)據(jù)定義或變量聲明語(yǔ)句中指定 n,則默認(rèn)長(zhǎng)度為 1。如果沒(méi)有使用 CAST 函數(shù)指定 n,則默認(rèn)長(zhǎng)度為 30。
如果列數(shù)據(jù)項(xiàng)的大小可能相同,請(qǐng)使用 nchar。
如果列數(shù)據(jù)項(xiàng)的大小可能差異很大,請(qǐng)使用 nvarchar。
sysname 是系統(tǒng)提供的用戶定義數(shù)據(jù)類型,除了不以為零外,在功能上與 nvarchar(128) 相同。sysname 用于引用數(shù)據(jù)庫(kù)對(duì)象名
固定長(zhǎng)度或可變長(zhǎng)度的字符數(shù)據(jù)類型。
char [ ( n ) ]
固定長(zhǎng)度,非 Unicode 字符數(shù)據(jù),長(zhǎng)度為 n 個(gè)字節(jié)。n 的取值范圍為 1 至 8,000,存儲(chǔ)大小是 n 個(gè)字節(jié)。char 的 SQL 2003 同義詞為 character。
varchar [ ( n | max ) ]
可變長(zhǎng)度,非 Unicode 字符數(shù)據(jù)。n 的取值范圍為 1 至 8,000。max 指示最大存儲(chǔ)大小是 2^31-1 個(gè)字節(jié)。存儲(chǔ)大小是輸入數(shù)據(jù)的實(shí)際長(zhǎng)度加 2 個(gè)字節(jié)
可變長(zhǎng)度的偏移陣列 VarOffset 2*VarCount(每一列都要另外加上2個(gè)自己的偏移量)。所輸入數(shù)據(jù)的長(zhǎng)度可以為 0 個(gè)字符。SQL-2003 中的 varchar 就是 char varying 或 character varying。
備注 如果未在數(shù)據(jù)定義或變量聲明語(yǔ)句中指定 n,則默認(rèn)長(zhǎng)度為 1。如果在使用 CAST 和 CONVERT 函數(shù)時(shí)未指定 n,則默認(rèn)長(zhǎng)度為 30。
將為使用 char 或 varchar 的對(duì)象指派數(shù)據(jù)庫(kù)的默認(rèn)排序規(guī)則,除非使用 COLLATE 子句指派了特定的排序規(guī)則。該排序規(guī)則控制用于存儲(chǔ)字符數(shù)據(jù)的代碼頁(yè)。
如果站點(diǎn)支持多語(yǔ)言,請(qǐng)考慮使用 Unicode nchar 或 nvarchar 數(shù)據(jù)類型,以最大限度地消除字符轉(zhuǎn)換問(wèn)題。如果使用 char 或 varchar,建議執(zhí)行以下操作:
如果列數(shù)據(jù)項(xiàng)的大小一致,則使用 char。
如果列數(shù)據(jù)項(xiàng)的大小差異相當(dāng)大,則使用 varchar。
如果列數(shù)據(jù)項(xiàng)大小相差很大,而且大小可能超過(guò) 8,000 字節(jié),請(qǐng)使用 varchar(max)。
本人測(cè)試了一下這幾個(gè)數(shù)據(jù)類型的區(qū)別,以下是測(cè)試腳本跟結(jié)果:
DECLARE @a CHAR(6)
SET @a='您啊啊啊啊是'
PRINT 'char:'+@a
DECLARE @b CHAR(6)
SET @b='abcdefg'
PRINT 'char:'+@b
DECLARE @c CHAR(6)
SET @c='123456'
PRINT 'char:'+@c
-----------------------
DECLARE @d NCHAR(6)
SET @d=N'您啊啊啊啊是'
PRINT 'nchar:'+@d
DECLARE @e NCHAR(6)
SET @e=N'abcdefg'
PRINT 'nchar:'+@e
DECLARE @f NCHAR(6)
SET @f=N'123456'
PRINT 'nchar:'+@f
------------------------------
DECLARE @g VARCHAR(6)
SET @g='您啊啊啊啊是'
PRINT 'varchar:'+@g
DECLARE @h VARCHAR(6)
SET @h='abcdefg'
PRINT 'varchar:'+@h
DECLARE @i VARCHAR(6)
SET @i='123456'
PRINT 'varchar:'+@i
--------------------------------
DECLARE @j NVARCHAR(6)
SET @j=N'您啊啊啊啊是'
PRINT 'nvarchar:'+@j
DECLARE @k NVARCHAR(6)
SET @k=N'abcdefg'
PRINT 'nvarchar:'+@k
DECLARE @l NVARCHAR(6)
SET @l=N'123456'
PRINT 'nvarchar:'+@l
結(jié)果:
char:您啊啊
char:abcdef
char:123456
nchar:您啊啊啊啊是
nchar:abcdef
nchar:123456
varchar:您啊啊
varchar:abcdef
varchar:123456
nvarchar:您啊啊啊啊是
nvarchar:abcdef
nvarchar:123456
- 詳解SQL Server中的數(shù)據(jù)類型
- 詳解MySQL數(shù)據(jù)類型int(M)中M的含義
- mysql存儲(chǔ)引擎和數(shù)據(jù)類型(二)
- Java數(shù)據(jù)類型與MySql數(shù)據(jù)類型對(duì)照表
- SQL Server數(shù)據(jù)類型轉(zhuǎn)換方法
- SQL Server比較常見數(shù)據(jù)類型詳解
- SQLite教程(七):數(shù)據(jù)類型詳解
- SQL Server數(shù)據(jù)類型char、nchar、varchar、nvarchar的區(qū)別淺析
- sql使用cast進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換示例
- SQL的常用數(shù)據(jù)類型列表詳解
相關(guān)文章
SQL2005CLR函數(shù)擴(kuò)展 - 關(guān)于山寨索引
對(duì)于文件索引lucene才是權(quán)威,這里只是自己實(shí)現(xiàn)了一個(gè)可以實(shí)現(xiàn)簡(jiǎn)單文件索引的半成品.所謂文件索引就是把sql字符串按字節(jié)分詞保存到磁盤文件目錄結(jié)構(gòu)中用來(lái)快速定位2013-06-06SQL Server 2005“備份集中的數(shù)據(jù)庫(kù)備份與現(xiàn)有的數(shù)據(jù)庫(kù)不同”解決方法
SQL Server 2005“備份集中的數(shù)據(jù)庫(kù)備份與現(xiàn)有的數(shù)據(jù)庫(kù)不同”解決方法2009-07-07SqlServer 2005 T-SQL Query 學(xué)習(xí)筆記(1)
SqlServer 2005 T-SQL Query 學(xué)習(xí)筆記(1)2010-02-02在登錄觸發(fā)器錯(cuò)誤情況下連接SQL Server的方法
如果你創(chuàng)建了一個(gè)登錄觸發(fā)器,并且在這個(gè)觸發(fā)器中有一些不好的代碼,那么當(dāng)你嘗試著登錄時(shí),你將會(huì)得到一個(gè)類似于圖一顯示的錯(cuò)誤2011-07-07SQL?Server中帶有OUTPUT子句的INSERT,DELETE,UPDATE應(yīng)用
這篇文章介紹了SQL?Server中帶有OUTPUT子句的INSERT,DELETE,UPDATE應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06SQL Server 2005 中使用 Try Catch 處理異常
本文主要對(duì)比了Sql Server 2000和Sql Server 2005對(duì)異常處理的方法,Sql Server 2005 之后的TRY CATCH捕捉異常,更類似C#、JAVA等語(yǔ)言,更容易被程序員理解。2016-05-05sql2005附加數(shù)據(jù)庫(kù)操作步驟(sql2005還原數(shù)據(jù)庫(kù))
本文介紹了sql2005附加數(shù)據(jù)庫(kù)的操作步驟,簡(jiǎn)單幾步就可以完成,大家參考使用吧2014-01-01SQLServer無(wú)法打開用戶默認(rèn)數(shù)據(jù)庫(kù) 登錄失敗錯(cuò)誤4064的解決方法
這篇文章主要介紹了SQLServer無(wú)法打開用戶默認(rèn)數(shù)據(jù)庫(kù) 登錄失敗錯(cuò)誤4064的解決方法,需要的朋友可以參考下2015-01-01