数据库数据类型占用空间问题(50分)

  • 主题发起人 主题发起人 wlyft
  • 开始时间 开始时间
W

wlyft

Unregistered / Unconfirmed
GUEST, unregistred user!
nchar<br>varchar<br>nvarchar<br>在长度一样的情况下,哪个占用空间会比较大一点<br>SQLserver2000
 
nchar 和 nvarchar<br>nchar 是固定长度 Unicode 数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用 UNICODE UCS-2 字符集。<br><br>nchar(n)<br><br>包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。<br><br><br>nvarchar(n)<br><br>包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。<br>注释<br>如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。<br><br>如果希望列中所有数据项的大小接近一致,则使用 nchar。<br><br>如果希望列中数据项的大小差异很大,则使用 nvarchar。<br><br><br>varchar[(n)]<br>长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
 
如果长度一定,并且内容里有非宽字符的字母则<br>最短varchar<br>其次nchar<br>最长nvarchar<br><br>如果长度一定,并且内容里全是宽字符则<br>最短nchar<br>varchar nvarchar一样
 
我的意思每种类型都设定为30时<br>输入的是字符比如说是"1*Kk/大",这时哪一种类型占用空间最小?<br>如果输入的是"1*Kk/",这时哪一种类型占用空间最小?
 
nchar定长,你输入多少它都占30*2字节的空间<br>varchar 存长度标识+实际字符占用空间,单字节字符占1字节<br>nvarchar存长度标识+实际字符占用空间,单字节字符占2字节<br>自己算
 
楼上解释正确。
 
后退
顶部