char varchar nchar nvarcharar到底有多大区别
首先说明下,ASP.NET MVC系列还在龟速翻译中。
工作好多年,基础知识甚是薄弱,决定以后在coding(cv操作)的时候尽量多google下,然后总结下来,目的有三:
1. 加深自己的理解,如果园看懂了并且没有误导人,那么我就理解对了。
2. 以备自己遇到问题之后还要google,直接看看自己的就好了。
3. 也许面试前的突击能用到,不用东找西看
下面言归正传,介绍下char、varchar、nchar、nvarcharar到底有什么区别,免得每次创建新表的时候,总是在模仿别人的,自己的主见呢?
Q:这个列为什么使用这类型,长度为什么是这么长?
A:某某创建的表的类似的列就是这样的定义的。(好惭愧、-_- !)
Nchar 和 nvarchar 存储Unicode字符
char 和 varchar 不能存储Unicode字符。
char 和 nchar是固定长度,当存储的字符长度小于定义的长度,剩余长度的空间用空格补足。
varchar 和 nvarchar是可变长度,可以理解为在定义长度的范围内,按需存储,剩余长度的空间不会用空格填充。
例如,将长度设置为10,分别存储boyce
char(10)存储结果:’boyce ‘
varchar(10) 存储结果:’boyce’
最后还是以表格的形式总结下:
数据类型 |
定义 |
存储数据 |
长度 |
存储是否固定 |
使用建议(仅供参考) |
char |
character |
非Unicode |
[1,8000] |
是 |
列数据的大小基本一致 |
nchar |
national char |
Unicode |
[1,4000] |
否 |
列数据的大小基本一致 |
varchar |
char varying |
非Unicode |
[(1,8000)|max] |
是 |
列数据的大小相差很大可能会超过8000 个字节时使用max |
nvarchar |
National char varying |
Unicode |
[(1,4000)|max] |
否 |
列数据的大小相差很大可能会超过4000 个字节时使用max |