declare @a nvarchar(80)
SELECT @a='1000-2000万'
select datalength(@a)--为什么这里显示的长度是20而不是11呢?
select datalength('1000-2000万')--这里是11我没什么疑问

解决方案 »

  1.   

    declare @a nvarchar(80)
    SELECT @a='1000-2000万'
    select datalength(@a)--这里的@a是unicode
    select datalength(N'1000-2000万')--加N之后就是20,你的编码方式决定了
      

  2.   

    nvarchar(80)这种数据类型,不管单个字符还是汉字都占两个字节
      

  3.   

    nvarchar

    varchar
    區別
      

  4.   

    DataLength()函数返回的是字符串字节的长度,包含后缀空格。而Len()函数返回的是字符串的字符长度,不包含后缀的空格。
      

  5.   

    而且nvarchar每个字符占两个字节
      

  6.   

    确实是编码方式的问题,我提出那样的问题完全是因为我用js验证前台页面数据长度时不知道到底该怎么限定长度,比如说alert('1000-2000万'.length)弹出长度是10,而存进数据库sqlServer2005,用datalength('1000-2000万')计算,长度就是11。我想我需要去简单的了解一下编码的相关知识了。