数据库中的字符类型存储字符和汉字的数量
sqlServer2012(936 简体中⽂GBK )为例:
例如:
varchar(10),只能存储10个英⽂字符或数字,也只能存储5个汉字;
char(10),只能存储10个英⽂字符或数字,也只能存储5个汉字;
nvarchar(10),即存储10个英⽂字符或数字,也能存储10个汉字;
nchar(10),即存储10个英⽂字符或数字,也能存储10个汉字;
varchar(max),⼤值数据类型最多可以存储2^30-1个字节的数据(varchar()、nvarchar()、varbinary())
⼩结:
Unicode字符集就是为了解决字符集这种不兼容的问题⽽产⽣的,它所有的字符都⽤两个字节表⽰,即英⽂字符也是⽤两个字节表⽰。
⽽前缀n就表⽰Unicode字符,⽐如nchar,nvarchar,这两种类型使⽤了Unicode字符集。
超过⼤⼩会提⽰出错。
补充说明:
sql server中的Varchar和Nvarchar的区别:
1. Varchar按实际字节长度存储,1个汉字1字节,1个英⽂1字节,长度介于1和8000之间,存储⼤⼩为输⼊数据的字节的实际长度
2. Nvarchar按字符数量存储,不论汉字或英⽂,都是2字节,长度介于1与4000之间,存储⼤⼩是所输⼊字符个数的两倍(n前缀的,n表⽰Unicode字符,即所有字符都占两个字节)
3. 从存储⽅式上,nvarchar是按字符存储的,⽽ varchar是按字节存储的
4. 从存储量上考虑, varchar⽐较节省空间,因为存储⼤⼩为字节的实际长度,⽽ nvarchar是双字节存储
5. 如果你做的项⽬可能涉及不同国家语⾔之间的转换,建议⽤nvarchar,因为nvarchar是使⽤Unicode编码,会减少乱码的出现⼏率
6. Char/NChar固定长度数据类型,不⾜的补英⽂半⾓空格。
LEN()函数:返回给定字符串表达式的字符(⽽不是字节)个数,其中不包含尾随空格。(Len只返回字符数,⼀个汉字代表⼀个字符)DATALENGTH()函数:返回任何表达式所占⽤的字节数。(Datalength返回的是字节数,⼀个汉字两个字节)
Len()不包含空格在内长度,⽽DATALENGTH()包含空格。
mysql:
在5.5.49的版本,字符集是utf-8下,char(10)和varchar(10)存储的汉字和英⽂的数量都是10个unicode汉字
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论