请教:如何使用变量
(1)变量:@a1=100,@a2=200,...
(2)变量:@b等于'@a1'或'@a2'或、、、
(3)求变量:@c等于@b所表示的@a1或@a2或、、、之值100、200、、、、
请给出sql范例语句。
谢谢!

解决方案 »

  1.   

    (1)变量:@a1=100,@a2=200,...
    (2)变量:@b可能等于'@a1'或者等于'@a2'或者、、、,
       变量@b依据实际需要赋值
    (3)求变量@b所表示的@a1或者@a2或者、、、之值100、200、、、、
      

  2.   

    ??????????
    declare @a1 int,@a2 int
    declare @b int
    select @a1=100,@a2=200select @b=@a1
    select @b
    select @b=@a2
    select @b
      

  3.   

    declare @a1 int,@a2 int
    declare @b int
    select @a1=100,@a2=200
    declare @sql nvarchar(4000)
    set @sql=N'select @b='+cast(@a1 as nvarchar)
    exec sp_executesql @sql,N'@b int output',@b output
    select @b
      

  4.   

    (1)变量@a1、@a2、、、1月份等于123、2月份等于354、、、
    (2)变量@b字符类型,可能等于'@a1'或者等于'@a2'或者、、、,
       变量@b依据实际需要赋值
    (3)求变量@b所表示的@a1或者@a2或者、、、之值100、200、、、、
      

  5.   

    (1)有一组数据:变量@a1、@a2、、、
       例如:1月份等于123、2月份等于354、、、6月份等于666
    (2)变量@b字符类型,可能等于'@a'+'1'或者等于'@a'+'2'或者、、、,
       例如:当前为6月,则@b='@a'+'6'
    (3)求变量@b所表示的@a1或者@a2或者、、、之值123、354、、、、
       例如:求当前月度@a6之值666
      

  6.   

    根据上午你提的这个,哪里不合要求??create table tb(年份 int,[1月] int,[2月] int,[3月] int)
    insert into tb select 2006,100,500,800
    godeclare @month nvarchar(20)
    set @month=N'2'
    declare @year int
    set @year=2006
    declare @t int
    declare @sql nvarchar(4000)
    set @sql=N'select @t=['+cast(@month as nvarchar)+'月] from tb where 年份='+cast(@year as nvarchar)
    exec sp_executesql @sql,N'@t int output',@t output
    select @tdrop table tb
      

  7.   

    谢谢:itblog(BegCSharp)
    做为数据表没有问题。
    现在我想只用变量,应该如何做?
      

  8.   

    declare @a1 int,@a2 int,@a3 int,@i int,@b varchar(10),@sql nvarchar(400)
    select @a1=100,@a2=200,@a3=300
    set @b='@a'+'2'
    set @sql=N'select '+cast(@b as nvarchar)
    exec sp_executesql @sql,N'@a2 int',@a2
      

  9.   

    declare @a1 int,@a2 int,@a3 int,@i int,@b varchar(10),@sql nvarchar(400),@par nvarchar(400)
    select @a1=100,@a2=200,@a3=300
    set @b='@a'+'2'
    set @par=@b+' int'
    set @sql=N'select '+cast(@b as nvarchar)
    exec sp_executesql @sql,@par,@a2
      

  10.   

    --try
    declare @sql nvarchar(400),@b varchar(20)
    set @b='@a'+'2'
    set @sql='declare @a1 int,@a2 int,@a3 int,@i int,@b varchar(10) 
    select @a1=100,@a2=200,@a3=300 '
    set @sql=@sql+N'select '+@b
    exec(@sql)
      

  11.   

    请帮忙修改如下语句:
    declare @a1 int,@a2 int,@a3 int,、、、,@b1 int,@b2 varchar(10),@c1 varchar(10)
    set @a1=123,@a2=456,@a3=789,、、、
    set @b1=1也可能=2也可能=3也可能、、、
    set @b2='@a'+convert(char,@b1)
    set @c1=@b2--不知道这一句怎么写
    希望
    当@b1=1时@c1=123
    当@b1=2时@c1=456
    当@b1=3时@c1=789
    、、、
    谢谢!
      

  12.   

    這個意思??declare @a1 int,@a2 int,@a3 int,@b1 int,@b2 varchar(10),@c1 varchar(10)
    select @a1=123, @a2=456, @a3=789
    Set @b1=2
    Set @c1=(Case @b1 When 1 Then @a1 When 2 Then @a2 When 3 Then @a3 End)
    Select @c1
      

  13.   

    谢谢:paoluo(一天到晚游泳的鱼) 
    意思很对。
    问题Set @c1=(Case @b1 When 1 Then @a1 When 2 Then @a2 When 3 Then @a3 End)
    当变量@a比较多时,例如:@a1...@an
    应该如何处理呢?
    谢谢!
      

  14.   

    谢谢:paoluo(一天到晚游泳的鱼) 
    意思很对。
    问题Set @c1=(Case @b1 When 1 Then @a1 When 2 Then @a2 When 3 Then @a3 End)
    当变量@a比较多时,例如:@a1...@an
    应该如何处理呢?
    谢谢!
    =======用我的方法就可以了,我这里只举了三个,其实无数个都可以的。
    declare @sql nvarchar(400),@b varchar(20)
    set @b='@a'+'2'
    set @sql='declare @a1 int,@a2 int,@a3 int,@i int,@b varchar(10) 
    select @a1=100,@a2=200,@a3=300 '
    set @sql=@sql+N'select '+@b
    exec(@sql)
      

  15.   

    如何实现:
    set @c1=@b2--不知道这一句怎么写
      

  16.   

    如何实现:
    set @c1=@b2--不知道这一句怎么写
    =====
    declare @sql nvarchar(400),@b varchar(20)
    set @b='@a'+'2'
    set @sql='declare @a1 int,@a2 int,@a3 int,@i int,@b varchar(10),@c1 int 
    select @a1=100,@a2=200,@a3=300 '
    set @sql=@sql+N'select @c1='+@b
    set @sql=@sql+N' select @c1 as ''c1'''
    exec(@sql)
      

  17.   

    1.定义变量
    declare @a1 int,@a2 int,@a3 int
    select @a1=123, @a2=456, @a3=789
    第二种方法paoluo的可以,楼上的执行时有问题出现
      

  18.   

    yyy39() ( ) 信誉:102  2006-6-15 8:49:38  得分: 0  
     
     
       
    谢谢:paoluo(一天到晚游泳的鱼) 
    意思很对。
    问题Set @c1=(Case @b1 When 1 Then @a1 When 2 Then @a2 When 3 Then @a3 End)
    当变量@a比较多时,例如:@a1...@an
    应该如何处理呢?
    谢谢!-----------------------------
    如果想動態處理的話,@a1的定義5及賦值就必須放到動態語句內。
     
    declare @c1 varchar(10), @sql nvarchar(400),@b1 int
    Set @b1=2
    Select @sql=N'declare @a1 int,@a2 int,@a3 int;select @a1=123, @a2=456, @a3=789;Select @c1=@a'+Rtrim(@b1)
    exec sp_executesql @sql, N'@c1 Int output', @c1 output
    Select @c1
      

  19.   

    wgsasd311(自强不息) ( ) 信誉:100  2006-6-15 9:11:29  得分: 0  
     
     
       
    如何实现:
    set @c1=@b2--不知道这一句怎么写
    =====
    declare @sql nvarchar(400),@b varchar(20)
    set @b='@a'+'2'
    set @sql='declare @a1 int,@a2 int,@a3 int,@i int,@b varchar(10),@c1 int 
    select @a1=100,@a2=200,@a3=300 '
    set @sql=@sql+N'select @c1='+@b
    set @sql=@sql+N' select @c1 as ''c1'''
    exec(@sql)
      
     
    ---------------------------
    你這個雖然可以得到結果,但是這個變量@c1不能直接拿來用了。