• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

为多个表增加字段

wmg494005678 2011-04-21 11:23:20
数据库中有很多以TBDATA开头的表,如TBDATA_0001,TBDATA_0002,TBDATA_0012,TBDATA_****等等,
现在要为这些表增加字段,TBDATA_ZX1 VARCHAR(10) NULL,TBDATA_ZX2 VARCHAR(10) NULL,TBDATA_ZX3 VARCHAR(10) NULL
应该怎么写SQL呢,求高手
...全文
61 点赞 收藏 9
写回复
9 条回复
oO寒枫Oo 2011年04月21日
[Quote=引用 5 楼 wmg494005678 的回复:]
引用 3 楼 lxpbs8851 的回复:

是数据库中所有以 table_开头的都要加上相同的3列么?

是的啊
[/Quote]

刚去吃饭了 做了个简单的 你测试一下


declare @sql varchar(max)
declare @name varchar(100)
set @sql=''

declare mycursor cursor for
select name from sysobjects where type = 'U' and name like 'TBDATA_%'
open mycursor
fetch next from mycursor
into @name
while (@@fetch_status=0)
begin
set @sql=@sql+' alter table '+@name+' add TBDATA_ZX1 VARCHAR(10)'+' alter table '+@name+' add TBDATA_ZX2 VARCHAR(10)'+' alter table '+@name+' add TBDATA_ZX3 VARCHAR(10)'
fetch next from mycursor
into @name
end
close mycursor
deallocate mycursor

exec(@sql)
回复 点赞
wmg494005678 2011年04月21日
[Quote=引用 1 楼 maco_wang 的回复:]

SQL code
alter table TBDATA_0001
add TBDATA_ZX1 VARCHAR(10) NULL

多的话就循环动态拼接
[/Quote]
求详解
回复 点赞
wmg494005678 2011年04月21日
[Quote=引用 2 楼 acherat 的回复:]

SQL code

--拼动态语句,如果你的表明有规律的话!

declare @sql varchar(8000)
declare @i int
set @i = 1
while(@i <= 12) --TBDATE_0012 从0001到0012
begin
select @sql = isnull(@sql,'') + ' alter table TBDATA_00' + lt……
[/Quote]
这个可得先判断一下,这个表是否存在。。。表不是顺序创建的啊
回复 点赞
wmg494005678 2011年04月21日
[Quote=引用 3 楼 lxpbs8851 的回复:]

是数据库中所有以 table_开头的都要加上相同的3列么?
[/Quote]
是的啊
回复 点赞
hyc_music1981 2011年04月21日
select * From sysobjects where xtype = 'U' and name like 'TBDATA_%'

查到这些表, 写个带游标的SQL逐个更新, 如果不是很多, 结果复制出来手工做更快一些
回复 点赞
oO寒枫Oo 2011年04月21日
是数据库中所有以 table_开头的都要加上相同的3列么?
回复 点赞
兔子党党务院院长 2011年04月21日

--拼动态语句,如果你的表明有规律的话!

declare @sql varchar(8000)
declare @i int
set @i = 1
while(@i <= 12) --TBDATE_0012 从0001到0012
begin
select @sql = isnull(@sql,'') + ' alter table TBDATA_00' + ltrim(@i) + ' add ...'
set @i = @i + 1
end
exec(@sql)
回复 点赞
叶子 2011年04月21日
alter table TBDATA_0001
add TBDATA_ZX1 VARCHAR(10) NULL

多的话就循环动态拼接
回复 点赞
oO寒枫Oo 2011年04月21日
或者直接用这个

declare @sql varchar(max)
set @sql=''
select @sql=@sql+' alter table '+ name+' add TBDATA_ZX1 VARCHAR(10)'+' alter table '+name+' add TBDATA_ZX2 VARCHAR(10)'+' alter table '+name+' add TBDATA_ZX3 VARCHAR(10)'
from sysobjects where type = 'U' and name like 'TBDATA%'
exec(@sql)
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告