sql 2000 table 字段的循環(50分)

  • 主题发起人 主题发起人 hason
  • 开始时间 开始时间
H

hason

Unregistered / Unconfirmed
GUEST, unregistred user!
table1
a1 a2 a3 a4
1 aa1 bb1 cc1
2 aa2 bb2 cc2
有沒有像下面的用法:
declare @v char(2)
for i=1 to 4
begin
select @v='a'+inttostr(i)
select @v from table1 --@v 字段名
end
 
加油踢!!!!!!!!!!!!!!
 
有这么用吗看来我真的要加油啊!
 
真的沒這樣的用法?
我覺得這樣的用法會很常用到的,
微軟缺少此功能,是不是一個缺點
微軟加油,快補上!

其它database有這樣的用法嗎 ?
 
应该可以,不过sql server 没有 for 这样的循环语句而必须用 WHILE,还有字段名或表名
不能直接用变量,所以要用动态sql语句,下面给出一段代码作为参考:
declare @S nchar(100), @I int
set @I=1
while @I<=4 begin
set @S='select a'+ cast(@I AS char(1)) + ' from TEST_TABLE'
exec sp_executesql @s
set @I=@I+1
end
以上语句在SQL SERVER 2000通过,还不给分?[:)]
 
TO:heibaike
不好意思,一開始沒有說清楚些,這樣的用法我知道
問題是
declare @S nchar(100), @I int
set @I=1
while @I<=4 begin
set @S='select a'+ cast(@I AS char(1)) + ' from TEST_TABLE'
exec sp_executesql @s
set @I=@I+1
end

set @S='if Exists(select a'+ cast(@I AS char(1)) + ' from TEST_TABLE where a'+cast(@I AS char(1))+'>XXX)'
也就是說 @s里面要做一堆條件判斷
怎么做呢?

 
接上面
而且還要返回一些值
 
select * into #TEST_TABLE from table1 where...
declare @S nchar(100), @I int
set @I=1
while @I<=4 begin
set @S='select a'+ cast(@I AS char(1)) + ' from #TEST_TABLE'
exec sp_executesql @s
set @I=@I+1
end
如果我用臨時表結果會不行的

 
老大們,查查有沒有什么函數可以實現,類似
如:
SELECT COL_NAME(OBJECT_ID('Employees'), 1) from Employees
但結果是全是字段名
EmployeeID
EmployeeID
EmployeeID


 
后退
顶部