请教:如何使用变量
(1)变量:@a1=100,@a2=200,...
(2)变量:@b等于'@a1'或'@a2'或、、、
(3)求变量:@c等于@b所表示的@a1或@a2或、、、之值100、200、、、、
请给出sql范例语句。
谢谢!
(1)变量:@a1=100,@a2=200,...
(2)变量:@b等于'@a1'或'@a2'或、、、
(3)求变量:@c等于@b所表示的@a1或@a2或、、、之值100、200、、、、
请给出sql范例语句。
谢谢!
解决方案 »
- ====== 在XML列中插入CDATA节的问题,找了很久无解 =====
- MS SQL Server 2005,数据表能否打包
- sql server有没有像oracle的显示表结构的sql命令?
- SQL2000 修改端口号后,执行语句速度过慢
- 想了很久未解决,一个周期问题
- 关于终止sql中连接用户
- 为什么不能备份到网络驱动器?
- [求助]sql语句写法的问题[着急]
- 使用sp_makewebtask的时候,生成的HTML文件总是有问题
- 对--怎么样(用Delphi,不用也可以)才能将SQL SERVER2000中的表中字段描述取出?--点击UP则有分!!那个贴子的分可以随着增加!
- 高手帮帮忙啊
- 问一个,按日期统计点击数的问题...
(2)变量:@b可能等于'@a1'或者等于'@a2'或者、、、,
变量@b依据实际需要赋值
(3)求变量@b所表示的@a1或者@a2或者、、、之值100、200、、、、
declare @a1 int,@a2 int
declare @b int
select @a1=100,@a2=200select @b=@a1
select @b
select @b=@a2
select @b
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
(2)变量@b字符类型,可能等于'@a1'或者等于'@a2'或者、、、,
变量@b依据实际需要赋值
(3)求变量@b所表示的@a1或者@a2或者、、、之值100、200、、、、
例如:1月份等于123、2月份等于354、、、6月份等于666
(2)变量@b字符类型,可能等于'@a'+'1'或者等于'@a'+'2'或者、、、,
例如:当前为6月,则@b='@a'+'6'
(3)求变量@b所表示的@a1或者@a2或者、、、之值123、354、、、、
例如:求当前月度@a6之值666
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
做为数据表没有问题。
现在我想只用变量,应该如何做?
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
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
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)
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
、、、
谢谢!
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
意思很对。
问题Set @c1=(Case @b1 When 1 Then @a1 When 2 Then @a2 When 3 Then @a3 End)
当变量@a比较多时,例如:@a1...@an
应该如何处理呢?
谢谢!
意思很对。
问题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)
set @c1=@b2--不知道这一句怎么写
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)
declare @a1 int,@a2 int,@a3 int
select @a1=123, @a2=456, @a3=789
第二种方法paoluo的可以,楼上的执行时有问题出现
谢谢: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
如何实现:
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不能直接拿來用了。