黑马程序员技术交流社区
标题:
关于varchar 和nvarchar
[打印本页]
作者:
夏华成
时间:
2012-5-19 13:09
标题:
关于varchar 和nvarchar
昨天看了杨老师的视频.以及今天问了一下同事的理解 ,还有百度了一下
都说.varchar不能放中文.
全英文用 varchar
含中文用 nvarchar
大致就这把
我一开始还真不知道两者之间的区别.而且我实际工作中用到的都是用的varchar 没有用过 nvarchar
而且事实上varchar 是支持中文的.这使我心中就有了疑惑.
最终研究结果如下:
varchar(n)
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。
nvarchar(n)
包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。
两字段分别有字段值:我和coffee
那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。
如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar
关于varchar 能否存储中文:原来是这样的
正常情况下,我们使用varchar
也可以存储中文字符
,但是如果遇到操作系统是英文操作系统并且对中文字体的
支持不全面时
, 在SQL Server存储中文字符为varchar就会出现乱码(显示为??).
介于以上理解
虽然很多人.说有中文用nvarchar 全英文用varchar.但我不同意这种看法
如果数据库不考虑在英文或其它系统下运行.我觉得没有必要用nvarchar.直接用varchar
因为,varchar相比nvarchar存储数据要大,而且占用空间小
你们觉得呢
作者:
王卫
时间:
2012-5-19 13:16
额,牛B啊 ----
作者:
魏庆君
时间:
2012-5-19 15:07
应该考虑到的是有关存储空间问题,估计设计者也是这样想,毕竟十几年前的计算机存储设备不像现在这么的容易,容量和现在不是几个数量级的比较,端口这么的灵活
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2