给定一个字段的值,查询它所处的表以及字段

1.如果只知道一个字段的值,想通过这个值查询它属于哪个表的哪个字段
None.gifdeclare @str varchar(100)
None.gif
set @str='abcd'  --要搜索的字符串
None.gif

None.gif
declare @s varchar(8000)
None.gif
declare tb cursor local for
None.gif
ExpandedBlockStart.gif
/*
InBlock.gif  注意:
InBlock.gif 
InBlock.gif  1.字段值完全相等: 
InBlock.gif    select 1 from ['+b.name+'] where ['+a.name+'] ='''+@str+'''
InBlock.gif  2.所搜索的字段值为实字段值的一部分
InBlock.gif    select 1 from ['+b.name+'] where ['+a.name+'] =''%'+@str+'%''
ExpandedBlockEnd.gif
*/

None.gif
select s='if exists(select 1 from ['+b.name+'] where ['+a.name+'] ='''+@str+''')
None.gif print 
''所在的表及字段: ['+b.name+'].['+a.name+']'''
None.gif
from syscolumns a join sysobjects b on a.id=b.id
None.gif
where b.xtype='U' and a.status>=0
None.gif 
and a.xusertype in(175,239,231,167)
None.gif
open tb
None.gif
fetch next from tb into @s
None.gif
while @@fetch_status=0
None.gif
begin
None.gif 
exec(@s)
None.gif 
fetch next from tb into @s
None.gif
end
None.gif
close tb
None.gif
deallocate tb
None.gif
None.gif
None.gif
None.gif

2. 修改字段值:
   将已知数据库中字段值为'abc'的值,全部替换为'abca'
None.gifdeclare @oldstr varchar(100)
None.gif
set @oldstr='abc'  --原字符
None.gif
declare @newstr varchar(100)
None.gif
set @newstr='abca'  --新字符
None.gif

None.gif
declare @s varchar(8000)
None.gif
declare tb cursor local for
None.gif
select s='if exists(select 1 from ['+b.name+'] where ['+a.name+'] = '''+@oldstr+''')
None.gifupdate [
'+b.name+'] set ['+a.name+']='''+@newstr+''' where ['+a.name+']='''+@oldstr+''' '
None.gif
from syscolumns a join sysobjects b on a.id=b.id
None.gif
where b.xtype='U' and a.status>=0
None.gif 
and a.xusertype in(175,239,231,167)
None.gif
open tb
None.gif
fetch next from tb into @s
None.gif
while @@fetch_status=0
None.gif
begin
None.gif 
exec(@s)
None.gif 
fetch next from tb into @s
None.gif
end
None.gif
close tb
None.gif
deallocate tb

转自: http://blog.csdn.net/zlp321002/archive/2005/06/16/395621.aspx
文章来源于 http://www.cnblogs.com/zhangzs8896 版权归原作者所有
阅读更多
文章标签: 数据库
个人分类: .NET
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭