declare @in int ;
declare @str char(1000);
set @in=10;
while(@in>1)
begin
set @str=@str+'_aa_';
set @in=@in-1;
print @str;
end 
为什么什么也没打印出来呢?

解决方案 »

  1.   


    declare @in int ;
    declare @str char(1000);
    set @in=10;
    set @srt='';
    while(@in>1)
    begin
    set @str=@str+'_aa_';
    set @in=@in-1;
    print @str;
    end 
      

  2.   

    用@str = @str + '...'這種語句的時候最好寫成
    @str = isnull(@str, '') + '...'可以防止忘記給@str賦初值
      

  3.   

    还是什么也打印不出来!
    declare @in int 
    declare @str char(1000)
    set @in=10
    set @str=''
    while(@in>1)
    begin
    set @str=isnull(@str,'')+'aa'
    print @in
    set @in=@in-1
    print @str
    end 
    还是什么也打印不出来!
      

  4.   

    declare @in int 
    declare @str varchar(1000)
    set @in=10
    set @str=''
    while(@in>1)
    begin
    set @str=@str+'_aa_'
    set @in=@in-1
    print @str
    end
      

  5.   

    或者
    declare @in int
    declare @str char(1000)
    set @in=10
    while(@in>1)
    begin
    set @str=isnull(rtrim(@str),'')+'_aa_'
    set @in=@in-1
    print @str
    end
      

  6.   

    为什么把@str变成varchar就行了呢?
      

  7.   

    char型賦值的字符串當長度不足時後面會以空格補足比如
    declare @a char(10)
    set @a = ''
    這時候你print @a得到的是10個空格
      

  8.   

    LS牛吃草啊```----char是不会自己缩小长度的不足的空格补上~~所以第二次赋值也就不可能在1000格以外的地方+上'_aa_'~~~varchar就会自己把长度定位到所给的长度~~~这样就可以+上'_aa_'了~~以此类推!!!!