DECLARE  @参数1  AS NVARCHAR  
SET      @参数1 = '6000'  
---------------
真实结果:
select datalength(@参数1)--------结果是 ‘2’
---------------
希望结果:
select datalength(@参数1)--------结果是 ‘4’同样:select  @参数1 --------结果'6'     为什么不是‘6000’
菜鸟的知识盲点,希望大家速度解决 !

解决方案 »

  1.   

    NVARCHAR要有长度 NVARCHAR(10)
      

  2.   

    DECLARE  @参数1  AS VARCHAR(100)  
    SET      @参数1 = '6000'  
    select datalength(@参数1)         -------结果是 ‘4’ 
    select len(@参数1)  --------结果是 ‘4’ 
    select  @参数1                    --------结果是 ‘6000’ 
      

  3.   


    DECLARE  @参数1  AS NVARCHAR(30)你忘了定义长度了
      

  4.   

    DataLength()函数将返回存储或显示一个表达式所用的字节数.处理可变长度的字符数据类型时这个信息尤其有用,它不是和Len()函数一样返回字符数.例如,在nvarchar数据类型(或任何unicode数据类型)中,每个字符都使用两个字节.
    DataLength()函数的语法:
    DataLength(expression)
      

  5.   

    DECLARE @参数1 AS NVARCHAR(50)        ----在这里加上变量的长度
    SET @参数1='6000'Select LEN(@参数1)      ----结果是 '4'
    Select @参数1           ----结果是 '6000'
      

  6.   

    对于SQL男人来说,长度是很关键的。
      

  7.   

    楼主朋友,这个问题的产生可能和你在定义变量时NVARCHAR没有限定长度有关.datalength函数本身没有任何问题,这个函数的功能是把参数的字节长度返回.由于您没有规定NVARCHAR的长度,可能变量已经隐式转换成了整形变量了,而且其值是6,所以您在打印时,长度是2.具体的问题我也不是十分清楚.把变量的长度规定一下以后就能解决这个问题.需要注意的是,NVARCHAR存储的是unicode编码变量,长度应该是普通变量的2倍.
    在这中情况下:
    DECLARE  @参数1  AS NVARCHAR(20)  
    SET      @参数1 = '6000' 
    SELECT DATALENGTH(@参数1)
    输出的值是8,而不是4.因为变量@参数1是unicode编码,一个字符就占据了2个字节空间,所以输出是8.
    如果想得到4的话,那么就把变量声明为VARCHAR(20)就可以了.当然,长度是一个大于4的就可以.