求一条SQL语句

doniel 2009-04-09 01:10:27
我有一个数据库,里面有很多个表,其中有很多表的内容里都有aaa(不是全部表都有aaa)。我想将这个数据库的所有表里面的aaa换成bbb,这要怎么实现呢?请详细叙说...谢谢
...全文
175 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
doniel 2009-04-12
  • 打赏
  • 举报
回复
感谢yangniao,有心了...我慢慢研究一下了...
辰爸 2009-04-11
  • 打赏
  • 举报
回复
8楼的好像的每次都输入表名 替换的行,替换的字段把???
jxaa153659 2009-04-11
  • 打赏
  • 举报
回复
给LZ说一下思路,其实就是双循环嵌套,第一层循环所有的表,第二层循环所有的字段,
然后把内容为aaa的字段值修改为bbb。
然后就结束了。
以上是思路,希望楼主能够自己写出代码出来。不断进步。
yangniao 2009-04-11
  • 打赏
  • 举报
回复
补充下,上面少写了,代码是直接贴在这里的,不是在数据库里边写的,可能某些字有错误,当然也就没创建数据库来进行试验,思路是正确的,
yangniao 2009-04-11
  • 打赏
  • 举报
回复
楼主,我专门为你量身打造的一个存储过程代码如下,
create proc aa --创建存储过程aa
(
@tablename varchar(50), --这个是你的表名字
@bbb varchar(50) --要把name修改成为什么
)
as
begin --开始
declare @name varchar(100) --定义一个name接受你表里边的name
declare @id int --定义一个id接受你表里边的id
declare cursor youbiao for select @name=name,@id=id from @tablename --创建一个游标
open youbiao
fetch next from youbiao into @name,@id --把查询到得name 和id 放入@name和@id中
while @@fetch_status =0 --开始循环
begin
update @tablename set name=@bbb where name=@name and id=@id --修改者个表(@tablename) set name=你要修改的,
fetch next from youbiao into @name,@id --循环
end
close youbiao --关闭游标
deallocate youbiao --释放游标
end --结束
exec aa 第一个参数是表的名字,第二个参数是你要把name修改为什么样子,
执行者个过程的前提是你要执行的表的架构里边要有name 和id这两个字段 代码是手动写的,也创建具体数据库来进行试验,但是思路是正确的,
仅供参考
yangniao 2009-04-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yygyogfny 的回复:]
那你的表里的'aaa'所在的字段名称是什么?
[/Quote]
yygyougfny 你是不是玩武林外传啊
ma_shu_guang 2009-04-09
  • 打赏
  • 举报
回复
sp_msforeachtable 'update ? set aaa= bbb'
doniel 2009-04-09
  • 打赏
  • 举报
回复
请问cyz9977,要怎么改呢?
cyz9977 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yygyogfny 的回复:]
SQL code

/*
funcation:将某数据库中所有表中的某个具体的字段修改为某值

exec updateTable '名称','文燕专'
create by:文燕专
date:2009-4-9
*/

create procedure updateTable
@colName nvarchar(20),
@colValue nvarchar(20)
as
begin

declare cur cursor for
select name from sysobjects where type = 'u'

declare @name nvarchar(20)

open cur
fetch next from cur into @name
while @@fetch_status =0
begin
if exis…
[/Quote]

這個不能直接用~~
update語句要調整一下
最好不要直接用=
用replace的方式
yygyogfny 2009-04-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zheng_dong 的回复:]
感谢yygyogfny...但这也太高深了吧,水平有限,看不懂耶....
[/Quote]

这个,呃..
doniel 2009-04-09
  • 打赏
  • 举报
回复
感谢yygyogfny...但这也太高深了吧,水平有限,看不懂耶....
yygyogfny 2009-04-09
  • 打赏
  • 举报
回复

/*
funcation:将某数据库中所有表中的某个具体的字段修改为某值

exec updateTable '名称','文燕专'
create by:文燕专
date:2009-4-9
*/

create procedure updateTable
@colName nvarchar(20),
@colValue nvarchar(20)
as
begin

declare cur cursor for
select name from sysobjects where type = 'u'

declare @name nvarchar(20)

open cur
fetch next from cur into @name
while @@fetch_status =0
begin
if exists(select 1 from syscolumns where id = (select id from sysobjects where type = 'u' and name = @name) and name=@colName)
begin

declare @sql nvarchar(4000)
set @sql = ''

set @sql = 'update ' + @name + ' set ' + @colName + ' = ''' + @colValue + ''''

exec(@sql)

end
fetch next from cur into @name
end

close cur
deallocate cur

end



cyz9977 2009-04-09
  • 打赏
  • 举报
回复
update。。。。 replace。。。。
yangniao 2009-04-09
  • 打赏
  • 举报
回复
关注下
yygyogfny 2009-04-09
  • 打赏
  • 举报
回复
那你的表里的'aaa'所在的字段名称是什么?
doniel 2009-04-09
  • 打赏
  • 举报
回复
看来运气不好...还没有碰上高手...
doniel 2009-04-09
  • 打赏
  • 举报
回复
可能我没有说清楚...那个aaa并不是一个字段名,只是一个已写入的内容...
如 
  name sex number
aaa 男  15915915912
  111  女  13654875698
   ……
假如很多表都有‘aaa’,我想把它全换成bbb,那要怎么做?
BernardSun 2009-04-09
  • 打赏
  • 举报
回复
还是用一个存储过程,写多条sql方便
zz005 2009-04-09
  • 打赏
  • 举报
回复
用as啊,比如Select 字段1 as 编号 From 表1

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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