declare @month varchar(6),@aa nvarchar(100),@bb nvarchar(100)
set @month='201109'
set @bb='''aa_'''+'+'+'@month'
set @aa=@bbprint(@bb)
print(@aa)现在有这样一种情况,变化@bb赋了一个字符串该字符串中含有变量,
我现在想把变量@bb赋给变量@aa并且想让变量@aa的结果可以计算出来aa_201109求解。

解决方案 »

  1.   


    declare @month varchar(6),@aa nvarchar(100),@bb nvarchar(100)
    set @month='201109'
    set @bb='aa_'+@month
    set @aa=@bbprint(@bb)
    print(@aa)
      

  2.   


    declare @month varchar(6),@aa nvarchar(100),@bb nvarchar(100)
    set @month='201109'
    set @bb='aa_'+'@month'
    set @aa=@bbprint(@bb)
    print(@aa)
      

  3.   

    变量@BB的值是定死的,就是上面的语句不能动,这个问题的关键就是变量BB,变量BB是一个变动的内容事先分配了一个由变量组成的字符串。
    然后再根据情况把这个变量BB传给另一个变量,但传的过程中要把变量BB中的字符串进行计算变成一个正常的值。
      

  4.   


    把值直接賦給@aa 不行?
    declare @month varchar(6),@aa nvarchar(100),@bb nvarchar(100)
    set @month='201109'
    set @aa='aa_'+@month
      

  5.   

    前提我就不知道该给变量AA赋什么值,我只能通过变量BB赋给变量AA,
    再强调一下变量BB不能少他是数据的源头,没了变量BB下面的变量都不知道是什么值。
      

  6.   

    declare @month varchar(6),@aa nvarchar(100),@bb nvarchar(100)
    SET @bb='XXX'
    set @month='201109'
    set @bb='aa_'+@month+'@'+ISNULL(@bb,'')select @aa=LEFT(@bb,CHARINDEX('@',@bb)-1),@bb=NULLIF(STUFF(@bb,1,CHARINDEX('@',@bb),''),'')
    SELECT @aa,@bb
    這樣?
      

  7.   

    declare @month varchar(6),@aa nvarchar(100),@bb nvarchar(100)
    set @month='201109'
    set @bb='select @aa='+'''aa_''+'+'@month'exec sp_executesql @bb,N'@month varchar(6),@aa nvarchar(100) output',@month,@aa outputprint(@aa)
    /*
    aa_201109*/