我设置长度100,存了50个字母显示占用100个字符。我设置长度100,也可以存100个汉字,不应该是可以存50个汉字的吗?好象不对似的,怎么搞的!

解决方案 »

  1.   

    nvarchar(n) 包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。 
    varchar[(n)] 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。 
    网上查的
      

  2.   

    是不是有空格,用len取无论汉字还是字母,无论是全角还是半角,都应该上多少个就是多少
      

  3.   

    不对吧,wgzaaa试试执行下面语句.
    declare @a varchar(20),@b varchar(20),@c nvarchar(20),@d nvarchar(20)
    select @a='A', --半角字母
    @b='啊', --半角汉字
    @c='A', --全角字母
    @d='啊' --全角汉字
    select len(@a) as [len A],
    datalength(@a) as [datalength A],
    len(@b) as [len 啊],
    datalength(@b) as [datalength 啊],
    len(@c) as [len A],
    datalength(@c) as [datalength A],
    len(@d) as [len 啊],
    datalength(@d) as [datalength 啊]