博客新地址

http://wyz.67ge.com/

实例测试nvarchar,varchar的区别

公司项目要求支持多国语言,所以决定用utf-8,今天是数据库设计的第一天,我在asp+sqlserver环境下做了测试,结果无论中文、日文、英文、繁体中文出来的结果都一样,我的理解应该是只有nchar和nvarchar正常显示,其他的是乱码,不对吗?

假设你的数据库系统安装在简体中文环境下,   而且你的默认排序规则是   Chinease   的(默认安装),   则用下面的代码,   你就能测试出问题来.  

USE   tempdb   
  
GO   
    
  
CREATE   TABLE   tb(   
  col1   
varchar(10)   COLLATE   Latin1_General_CS_AS,     -- collate是对 char/varchar 有效的, nvarchar/nchar/ntext 不受collate的影响, 因此无须指定   collate
  col2   nvarchar(10)   COLLATE     Latin1_General_CS_AS   
  )   
  
GO   
    
  
INSERT   tb   SELECT   '',   ''   
  
GO   
    
  
SELECT   *,   DBCollate   =   DATABASEPROPERTYEX(DB_NAME(),   'Collation')   FROM   tb   
  
GO   
    
  
DROP   TABLE   tb   
    
  
/*--   结果   
    
  col1               col2               DBCollate   
  ----------   ----------   --------------------   
  ?                     国                     Chinese_PRC_CI_AS   
    
  (所影响的行数为   1   行)   
  --
*/

建表时,   为字段指定与实例默认collate不同的collae选项,   是为了在同一台电脑上把问题测试出来. 
 collate是对   char/varchar   有效的,   nvarchar/nchar/ntext   不受collate的影响,   因此无须指定   collate

posted @ 2008-08-19 17:08  yongzhi  阅读(265)  评论(0编辑  收藏  举报

博客新地址

http://wyz.67ge.com/