sqlserver2008 字符串类型varchar,nvarchar,nchar之间的区别

Posted senn0213

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver2008 字符串类型varchar,nvarchar,nchar之间的区别相关的知识,希望对你有一定的参考价值。

平时都没怎么注意sqlserver字符串的写法,以为它和mysql一样默认是varchar,然而不是。。。

然而今天在查询数据库数据时死活查不到,后来才发现从前台读取的数据后面含有大量空格 ,而前台jsp读取的数据是从数据库里预先读取动态生成的

这下我才注意到数据表里的字符串都是用nchar定义的,而不是varchar,查了资料发现它们的区别

区别

CHAR,NCHAR 定长,速度快,占空间大,需处理
VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理
NCHAR、NVARCHAR、NTEXT处理Unicode码

char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。

其实概括起来就是,nchar定长,nvarchar不定长,varchar不定长,nchar和nvarchar采用Unicode编码,在有中文英文混杂的存储上不容出错,但是如果字符串长度小于定义的,都会在后面用空格补齐,比如nchar(10)你的字符串只有5个,那么剩下5个都是用空格补齐,这在数据查询上很是麻烦,因为含有空格的字符串在数据表里根本查不到,而varchar不定长,貌似也会用空格自动补齐

解决办法:
在后台用字符串的replaceAll函数,即:String s=s.replaceAll(" ","");把字符串的所有空格去掉,在查询就ok了

说的也不是特别明白,小白暂时就这样记着,sqlserver真是麻烦,还不如mysql




以上是关于sqlserver2008 字符串类型varchar,nvarchar,nchar之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver 2008 字符串和int拼接

sqlserver2008时间转换问题,(拿上一个小时的数据)求解。

sql server 2008环境中,字段为decimal(18,2),当输入为空时,会报错。

SQL server 2008数据库中的数据类型那些,怎么用

sql server 2008 字段最多字符用那个类型

SQLSERVER 2008 查询数据字段名类型