在sql server management studio里输入
if not object_id('Tab') is null
    drop table Tab
Go
Create table Tab([Col1] int,[COl2] nvarchar(5))
Insert Tab
select 1,N'a,b,c' union all--这里的N是什么意思?
select 2,N'd,e' union all
select 3,N'f'
Go这里的Go可用可不用是吧?

解决方案 »

  1.   

    http://topic.csdn.net/u/20100903/17/a2e60dd9-ed77-4884-a87d-60b16da621cb.html 请看这里
      

  2.   

    使用 Unicode 数据
    Unicode 标准为全球商业领域中广泛使用的大部分字符定义了一个单一编码方案。所有的计算机都用单一的 Unicode 标准 Unicode 数据中的位模式一致地翻译成字符。这保证了同一个位模式在所有的计算机上总是转换成同一个字符。数据可以随意地从一个数据库或计算机传送到另一个数据库或计算机,而不用担心接收系统是否会错误地翻译位模式。对于用一个字节编码每个字符的数据类型,存在的问题之一就是此数据类型只能表示 256 个不同的字符。这就迫使对于不同的字母表(例如相对较小的欧洲字母表)采用多重编码规格(或者代码页)。而且也不可能处理象日文汉字或韩国文字这样具有数千个字符的字母表。每个 Microsoft® SQL Server™ 排序规则都有一个对表示 char、varchar 和 text 值中的每个字符定义位模式进行定义的代码页。可为个别的列和字符常量指派不同的代码页。客户端计算机使用与操作系统区域设置相关联的代码页解释字符位模式。有很多种不同的代码页。一些字符出现在某些代码页上,但并不出现在其它的代码页上。某些字符在一些代码页上用一个位模式定义,而在其它的代码页上却用另一个位模式定义。当您设计必须处理不同语言的国际性系统时,为了满足不同国家/地区的语言需求,给所有的计算机挑选代码页就变得困难了。要保证每一台计算机与使用不同代码页的系统交互时都进行正确的翻译也是困难的。Unicode 规格通过采用两个字节编码每个字符使这个问题迎刃而解。转换最通用商业语言的单一规格具有足够多的 2 字节的模式 (65,536)。因为所有的 Unicode 系统均一致地采用同样的位模式来代表所有的字符,所以当从一个系统转到另一个系统时,将不会存在未正确转换字符的问题。通过在整个系统中使用 Unicode 数据类型,可尽量减少字符转换问题。在 Microsoft SQL Server 中,以下数据类型支持 Unicode 数据: nchar
    nvarchar
    ntext 
    说明  这些数据类型的前缀 n 来自 SQL-92 标准中的 National(Unicode)数据类型。nchar、nvarchar 和 ntext 的用法分别与 char、varchar 和 text 的用法一样,但在以下方面不同: Unicode支持的字符范围更大。
    存储 Unicode 字符所需要的空间更大。
    nchar 和 nvarchar 列最多可以有 4,000 个字符,而不象 char 和 varchar 字符那样可以有 8,000 个字符。
    Unicode 常量使用 N 开头来指定:N'A Unicode string'。
    所有 Unicode 数据都使用相同的 Unicode 代码页。排序规则不控制用于 Unicode 列的代码页,仅控制比较规则和是否区分大小写等特性。 
      

  3.   

    if not object_id('Tab') is null
      drop table Tab
    Go
    Create table Tab([Col1] int,[COl2] nvarchar(5))
    Insert Tab
    select 1,N'a,b,c' union all--N是因为上面申明该字段为unicode,语法规定需要前面需要加上N
    select 2,N'd,e' union all
    select 3,N'f'
    Go ----这里的Go可要可不要
      

  4.   

    我如果不加N,也可以插入成功,并且数据里包括中文字符也没有问题。那么如果不加N,插入的数据是不是unicode编码的?
      

  5.   

    百度上
    http://baike.baidu.com/view/40801.htm"Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位"unicode并不是以两个字节来表示一个字(如汉字中的“可”),而是用三个字节来表示一个字(如汉字中的“可”)是吧?
      

  6.   

    unicode并不是以两个字节来表示一个字(如汉字中的“可”),而是用三个字节来表示一个字(如汉字中的“可”)是吧?怎么会是3个字节?
      

  7.   

    http://baike.baidu.com/view/40801.htm 又说:“简单地说,Unicode扩展自ASCII字元集。在严格的ASCII中,每个字元用7位元表示,或者电脑上普遍使用的每字元有8位元宽;而Unicode使用全16位元字元集。”这跟原来的
    “Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位”不一致,对不对?
      

  8.   

    “Unicode用数字0-0x10FFFF来映射这些字符”0x10FFFF不是占三个字节吗?
      

  9.   

    Unicode用数字0-0x10FFFF来映射这些字符-------这个不是说明unicode使用三个字节来表示一个字吗?
      

  10.   

    Unicode字符集可以简写为UCS(Unicode Character Set)。早期的Unicode 标准有UCS-2、UCS-4的说法。UCS-2用两个字节编码,UCS-4用4个字节编码。UCS-4根据最高位为0的最高字节分成2^7=128个 group。每个group再根据次高字节分为256个平面(plane)。每个平面根据第3个字节分为256行(row),每行有256个码位(cell)。group 0的平面0被称作BMP(Basic Multilingual Plane)。将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。 难道我们平时的unicode都是ucs-2?但是这里说的是早期的
      

  11.   

    加个N,表示是unicode编码,用双字节表示!
    GO可用可不用,
    go 上面的语句执行成功,才执行下面的sql。
      

  12.   

    Unicode用数字0-0x10FFFF来映射这些字符。哪位老大知道,为什么unicode是两个字节而不是三个字节?
      

  13.   

    http://hi.baidu.com/winner8080/blog/item/1a2edaed8924d02b63d09f52.html“UCS是一个字符集,那么怎么表示这个字符集里的字符呢,用2字节表示的就是UCS2,用4字节表示的就是UCS4了.”
    是不是我们平时说的unicode用两个字节,都是指的ucs2 ?
      

  14.   

    http://www.programmer-club.com/ShowSameTitleN/general/4309.html"unicode是一種字集標準, 世界上各個文字都會給予一個唯一編號, 以方便流通, 其編碼為4 byte. 不過第一字面(最高2 byte為0時)大都為常用字, 第二字面以後甚為罕用, 為了節省空間, 有些系統(例如Windows)便只採用第一字面的unicode字集, 亦即每個字的unicode用2 byte來表示. 為區別這兩種情況, 以4 byte unicode為準者, 稱為UCS4, 以2 byte unicode為準者, 稱為UCS2. 當然, UCS2並沒有支援全部的unicode, 因此還是有某些字無法顯示的問題, 不過一般正常的使用上而言, 也已經足夠了. 因此支援unicode, 還要考慮是UCS2還是UCS4的問題."