请教:如何使用变量(1)变量:@a1=100,@a2=200,...(2)变量:@b等于'@a1'或'@a2'或、、、(3)求变量:@c等于@b所表示的@a1或@a2或、、、之值

yyy39 2006-06-14 03:15:52
请教:如何使用变量
(1)变量:@a1=100,@a2=200,...
(2)变量:@b等于'@a1'或'@a2'或、、、
(3)求变量:@c等于@b所表示的@a1或@a2或、、、之值100、200、、、、
请给出sql范例语句。
谢谢!
...全文
333 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2006-06-15
  • 打赏
  • 举报
回复
。。。
yyy39 2006-06-15
  • 打赏
  • 举报
回复
很好谢谢各位朋友的帮助!
paoluo 2006-06-15
  • 打赏
  • 举报
回复
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不能直接拿來用了。
paoluo 2006-06-15
  • 打赏
  • 举报
回复
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
云中客 2006-06-15
  • 打赏
  • 举报
回复
1.定义变量
declare @a1 int,@a2 int,@a3 int
select @a1=123, @a2=456, @a3=789
第二种方法paoluo的可以,楼上的执行时有问题出现
wgsasd311 2006-06-15
  • 打赏
  • 举报
回复
如何实现:
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)
yyy39 2006-06-15
  • 打赏
  • 举报
回复
如何实现:
set @c1=@b2--不知道这一句怎么写
wgsasd311 2006-06-15
  • 打赏
  • 举报
回复
谢谢: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)
yyy39 2006-06-15
  • 打赏
  • 举报
回复
谢谢:paoluo(一天到晚游泳的鱼)
意思很对。
问题Set @c1=(Case @b1 When 1 Then @a1 When 2 Then @a2 When 3 Then @a3 End)
当变量@a比较多时,例如:@a1...@an
应该如何处理呢?
谢谢!
xeqtr1982 2006-06-15
  • 打赏
  • 举报
回复
看的不太明白
paoluo 2006-06-15
  • 打赏
  • 举报
回复
這個意思??

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
yyy39 2006-06-15
  • 打赏
  • 举报
回复
请帮忙修改如下语句:
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
、、、
谢谢!
wgsasd311 2006-06-14
  • 打赏
  • 举报
回复
--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)
wgsasd311 2006-06-14
  • 打赏
  • 举报
回复
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
wgsasd311 2006-06-14
  • 打赏
  • 举报
回复
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
xeqtr1982 2006-06-14
  • 打赏
  • 举报
回复
楼主的意思,没大明白。能否再解释一下?
yyy39 2006-06-14
  • 打赏
  • 举报
回复
谢谢:itblog(BegCSharp)
做为数据表没有问题。
现在我想只用变量,应该如何做?
itblog 2006-06-14
  • 打赏
  • 举报
回复
根据上午你提的这个,哪里不合要求??

create table tb(年份 int,[1月] int,[2月] int,[3月] int)
insert into tb select 2006,100,500,800
go

declare @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 @t

drop table tb
yyy39 2006-06-14
  • 打赏
  • 举报
回复
(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
itblog 2006-06-14
  • 打赏
  • 举报
回复
拜托,你就不会多打几个字,把意思表达清楚了~
加载更多回复(6)

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧