A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨曾荣 中级黑马   /  2012-3-16 20:46  /  1578 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

平时使用数据操作更新数据赋值的时候,直接就一个“=”后面用单引号把中文字符给括起来就完事了,
比如更新一个人的名字:update tbl_person set name='黑马学员' where id=2。老师却说在中文字符前最好加个N防止出错,也就是name=N'黑马学员',那这个N有什么用,之前学的数据库都没有听说过。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

5 个回复

倒序浏览
这要从varchar和nvarchar 2种类型说起:
varchar采用非Unicode字符集,在这里面英文为1个字节,中文为2个,如我是aa , 在里面就6个长度。
nvarchar 采用Unicode字符集,在这里不管英文还是中文,都是2个字节,适用于特殊字符和中文,如如我是aa , 在里面就8个长度.
如果一个字段设为 varchar ,插入中文时,一定的条件下会出现乱码,
所以中文一般用nvarchar 。
在插入的前面加上N这条,反正我到现在都没加,而且都没出错过。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
以防万一,最好还是加上这个'N'

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
表示该字符串采用Unicode方式编码
(    数据类型的前缀 N来自   SQL-92   标准中的   National   (Unicode)   数据类型。

   nchar、nvarchar   和   ntext   的用法分别与   char、varchar   和   text   的用法一样,但在以下方面不同:   
1.Unicode   支持的字符范围更大。
2.存储   Unicode   字符所需要的空间更大。
3.nchar   和   nvarchar   列最多可以有   4,000   个字符,而不像   char   和   varchar   字符那样可以有   8,000   个字符。
4.Unicode   常量使用   N   开头来指定:N 'A   Unicode   string '。

   所有   Unicode   数据都使用相同的   Unicode   代码页。排序规则不控制用于   Unicode   列的代码页,仅控制比较规则和是否区分大小写等特性。   
)

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
在用mssql企业管理器或者vs20XX的数据库管理工具,当你向一个表里新建一个中文字符的时候,会自动在你的字符串前+N,这个也可以自己配置!

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
方杰 发表于 2012-3-16 22:59
这要从varchar和nvarchar 2种类型说起:
varchar采用非Unicode字符集,在这里面英文为1个字节,中文为2个, ...

之前都是比较喜欢用varchar,一直看nvarchar 都不顺眼,原来nvarchar 有这么好的用途,受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马