黑马程序员技术交流社区

标题: update更新数据 [打印本页]

作者: 杨曾荣    时间: 2012-3-16 20:46
标题: update更新数据
平时使用数据操作更新数据赋值的时候,直接就一个“=”后面用单引号把中文字符给括起来就完事了,
比如更新一个人的名字:update tbl_person set name='黑马学员' where id=2。老师却说在中文字符前最好加个N防止出错,也就是name=N'黑马学员',那这个N有什么用,之前学的数据库都没有听说过。
作者: 方杰    时间: 2012-3-16 22:59
这要从varchar和nvarchar 2种类型说起:
varchar采用非Unicode字符集,在这里面英文为1个字节,中文为2个,如我是aa , 在里面就6个长度。
nvarchar 采用Unicode字符集,在这里不管英文还是中文,都是2个字节,适用于特殊字符和中文,如如我是aa , 在里面就8个长度.
如果一个字段设为 varchar ,插入中文时,一定的条件下会出现乱码,
所以中文一般用nvarchar 。
在插入的前面加上N这条,反正我到现在都没加,而且都没出错过。

作者: 何圣东    时间: 2012-3-17 00:28
以防万一,最好还是加上这个'N'
作者: 徐振升    时间: 2012-3-17 09:44
表示该字符串采用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   列的代码页,仅控制比较规则和是否区分大小写等特性。   
)
作者: 刘亚中    时间: 2012-3-17 13:52
在用mssql企业管理器或者vs20XX的数据库管理工具,当你向一个表里新建一个中文字符的时候,会自动在你的字符串前+N,这个也可以自己配置!
作者: 杨曾荣    时间: 2012-3-18 13:57
方杰 发表于 2012-3-16 22:59
这要从varchar和nvarchar 2种类型说起:
varchar采用非Unicode字符集,在这里面英文为1个字节,中文为2个, ...

之前都是比较喜欢用varchar,一直看nvarchar 都不顺眼,原来nvarchar 有这么好的用途,受教了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2