码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2018-05-19 22:31:05      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:unicode编码   空间   生成   数据库   存储   code   sql   动态   长度   

平时都没怎么注意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之间的区别

标签:unicode编码   空间   生成   数据库   存储   code   sql   动态   长度   

原文地址:https://www.cnblogs.com/senn0213/p/9061781.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!