SQL2005中charncharvarcharnvarchar数据类型的区别和使用环境讲解
现在就摘录一下sql2005联机丛书里的关于这几个数据类型的解释
字符数据类型(nchar长度固定,nvarchar长度可变)和Unicode数据使用UNICODEUCS-2字符集。
nchar[(n)]
n个字符的固定长度的Unicode字符数据。n值必须在1到4,000之间(含)。存储大小为两倍n字节。nchar的SQL-2003同义词为nationalchar和nationalcharacter。
nvarchar[(n|max)]
可变长度Unicode字符数据。n值在1到4,000之间(含)。max指示最大存储大小为2^31-1字节。存储大小是所输入字符个数的两倍+2个字节。所输入数据的长度可以为0个字符。nvarchar的SQL-2003同义词为nationalcharvarying和nationalcharactervarying。
备注如果没有在数据定义或变量声明语句中指定n,则默认长度为1。如果没有使用CAST函数指定n,则默认长度为30。
如果列数据项的大小可能相同,请使用nchar。
如果列数据项的大小可能差异很大,请使用nvarchar。
sysname是系统提供的用户定义数据类型,除了不以为零外,在功能上与nvarchar(128)相同。sysname用于引用数据库对象名
固定长度或可变长度的字符数据类型。
char[(n)]
固定长度,非Unicode字符数据,长度为n个字节。n的取值范围为1至8,000,存储大小是n个字节。char的SQL2003同义词为character。
varchar[(n|max)]
可变长度,非Unicode字符数据。n的取值范围为1至8,000。max指示最大存储大小是2^31-1个字节。存储大小是输入数据的实际长度加2个字节
可变长度的偏移阵列 VarOffset 2*VarCount(每一列都要另外加上2个自己的偏移量)。所输入数据的长度可以为0个字符。SQL-2003中的varchar就是charvarying或charactervarying。
备注如果未在数据定义或变量声明语句中指定n,则默认长度为1。如果在使用CAST和CONVERT函数时未指定n,则默认长度为30。
将为使用char或varchar的对象指派数据库的默认排序规则,除非使用COLLATE子句指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。
如果站点支持多语言,请考虑使用Unicodenchar或nvarchar数据类型,以最大限度地消除字符转换问题。如果使用char或varchar,建议执行以下操作:
如果列数据项的大小一致,则使用char。
如果列数据项的大小差异相当大,则使用varchar。
如果列数据项大小相差很大,而且大小可能超过8,000字节,请使用varchar(max)。
本人测试了一下这几个数据类型的区别,以下是测试脚本跟结果:
DECLARE@aCHAR(6)
SET@a="您啊啊啊啊是"
PRINT"char:"+@a
DECLARE@bCHAR(6)
SET@b="abcdefg"
PRINT"char:"+@b
DECLARE@cCHAR(6)
SET@c="123456"
PRINT"char:"+@c
-----------------------
DECLARE@dNCHAR(6)
SET@d=N"您啊啊啊啊是"
PRINT"nchar:"+@d
DECLARE@eNCHAR(6)
SET@e=N"abcdefg"
PRINT"nchar:"+@e
DECLARE@fNCHAR(6)
SET@f=N"123456"
PRINT"nchar:"+@f
------------------------------
DECLARE@gVARCHAR(6)
SET@g="您啊啊啊啊是"
PRINT"varchar:"+@g
DECLARE@hVARCHAR(6)
SET@h="abcdefg"
PRINT"varchar:"+@h
DECLARE@iVARCHAR(6)
SET@i="123456"
PRINT"varchar:"+@i
--------------------------------
DECLARE@jNVARCHAR(6)
SET@j=N"您啊啊啊啊是"
PRINT"nvarchar:"+@j
DECLARE@kNVARCHAR(6)
SET@k=N"abcdefg"
PRINT"nvarchar:"+@k
DECLARE@lNVARCHAR(6)
SET@l=N"123456"
PRINT"nvarchar:"+@l
结果:
char:您啊啊
char:abcdef
char:123456
nchar:您啊啊啊啊是
nchar:abcdef
nchar:123456
varchar:您啊啊
varchar:abcdef
varchar:123456
nvarchar:您啊啊啊啊是
nvarchar:abcdef
nvarchar:123456
相关文章
- Windows上使用CentOS部署HA大数据环境
- 在生产环境中使用Spring Cloud Sleuth的注意事项(一)
- oracle中的procedure编写和使用详解
- 使用XP环境搭建Oracle10g数据库(xporacle10g)
- Linux环境下VM虚拟机的简单使用(linux下的vm虚拟机)
- 使用Linux环境下的BBCP文件传输(linuxbbcp)
- 使用Linux Facter管理系统环境(linuxfacter)
- WPS在Linux环境下的安装及使用(wpslinux安装)
- 如何使用MySQL导出数据库?25字教程告诉你(mysql导出数据库语句)
- Linux环境下使用Ping命令轻松测试网络连接(linux下ping)
- 【Linux网络通信:ping命令的使用】(linux ping $)
- 使用php快速配置MSSQL环境(php配置mssql)
- 使用服务端Redis缓存提高网站性能(服务端 redis 缓存)
- MySQL和XCOPY结合使用的技巧(mysql xcopy)
- MySQL的下载和破解补丁让你更轻松地使用这个优秀的关系数据库管理系统(mysql下载和破解补丁)
- 串Oracle中使用循环取字符串的简单方法(oracle中循环取字符)
- 利用Redis集群构建高效管道运行环境(redis集群使用管道)
- Linux环境下使用JFS文件系统
- Linux环境中使用BIEE连接SQLServer业务数据源