为多个表增加字段

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呢,求高手
...全文
176 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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列么?
AcHerat 元老 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)

34,838

社区成员

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

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