如何批量修改数据库中不同字段中相同的值
数据库中有3个表分别为A,B,CA表中有两个字段A1A2B表中有两个字段B1,B2C表中有三个字段C1,C2,C3这些字段中都存在有abc这样的数据,现在请问高手,如何批...
数据库中有3个表分别为A ,B, C
A表中有两个字段A1 A2
B表中有两个字段B1,B2
C表中有三个字段C1,C2,C3
这些字段中都存在有abc这样的数据,现在请问高手,如何批量删除这三个表中存在有abc这样的数据,请指教谢谢!
这个我明白,这里举例有三个表,但如果数据库有一万个表,难道还还得写一万条SQL语句么?显然这种方法是很不灵活的,并且这些字段中的值是不定期插入的,也就是说不一定每个表的每个字段都有相同的值。也就是说可能C表中的C1,C2有相同值,下次C表的C1,C3有值。那么有没有一种方法可以直接便利数据库中的表的个数,并且根据表中各个字段中的相同值进行删除呢?请高手指教,谢谢! 展开
A表中有两个字段A1 A2
B表中有两个字段B1,B2
C表中有三个字段C1,C2,C3
这些字段中都存在有abc这样的数据,现在请问高手,如何批量删除这三个表中存在有abc这样的数据,请指教谢谢!
这个我明白,这里举例有三个表,但如果数据库有一万个表,难道还还得写一万条SQL语句么?显然这种方法是很不灵活的,并且这些字段中的值是不定期插入的,也就是说不一定每个表的每个字段都有相同的值。也就是说可能C表中的C1,C2有相同值,下次C表的C1,C3有值。那么有没有一种方法可以直接便利数据库中的表的个数,并且根据表中各个字段中的相同值进行删除呢?请高手指教,谢谢! 展开
展开全部
use test --修改为你的数据库名称
declare tb_name cursor for select NAME,ID from sysobjects WHERE TYPE='U' --得到用户表的ID
declare @in_char varchar(20)
set @in_char='%<script>%' ---查找注入字符串
declare @tj varchar(5000)
set @tj=' where '
declare @i int
set @i=0
declare @sql varchar(200)
DECLARE @table_name varchar(50)
DECLARE @table_id varchar(50)
DECLARE @feild_name varchar(50)
DECLARE @fd_count int
open tb_name
FETCH next FROM tb_name into @table_name,@table_id
while @@FETCH_STATUS=0
begin
set @i=0
declare fd_name cursor for SELECT NAME FROM syscolumns where id=@table_id and type=39 group by name--得到用户表某一ID的所有字符类型字段名称
open fd_name
FETCH next FROM fd_name into @feild_name
print @fd_count
while @@FETCH_STATUS=0
begin
set @i=@i+1
set @tj=@tj+@feild_name +' like '''+ @in_char +'''' +(case when (SELECT count(type) as fd_count FROM syscolumns where id=@table_id and type=39)
>@i then ' or ' else ' 'end)
FETCH next FROM fd_name into @feild_name
end
-- print @tj
if @tj!=''
begin
SET @SQL='DELETE FROM '+@TABLE_NAME+@TJ
print '切记先运行代码看print 出来的SQL确认后再删除数据,即将运行的代码是 '
print '===================================================================='
print @SQL
print '===================================================================='
--切记先运行代码看print 出来的SQL确认后再删除数据
exec(@sql) --修改注释后删除数据
end
set @tj=''
CLOSE fd_name
deallocate fd_name
FETCH next FROM tb_name into @table_name,@table_id
end
close tb_name
deallocate tb_name
declare tb_name cursor for select NAME,ID from sysobjects WHERE TYPE='U' --得到用户表的ID
declare @in_char varchar(20)
set @in_char='%<script>%' ---查找注入字符串
declare @tj varchar(5000)
set @tj=' where '
declare @i int
set @i=0
declare @sql varchar(200)
DECLARE @table_name varchar(50)
DECLARE @table_id varchar(50)
DECLARE @feild_name varchar(50)
DECLARE @fd_count int
open tb_name
FETCH next FROM tb_name into @table_name,@table_id
while @@FETCH_STATUS=0
begin
set @i=0
declare fd_name cursor for SELECT NAME FROM syscolumns where id=@table_id and type=39 group by name--得到用户表某一ID的所有字符类型字段名称
open fd_name
FETCH next FROM fd_name into @feild_name
print @fd_count
while @@FETCH_STATUS=0
begin
set @i=@i+1
set @tj=@tj+@feild_name +' like '''+ @in_char +'''' +(case when (SELECT count(type) as fd_count FROM syscolumns where id=@table_id and type=39)
>@i then ' or ' else ' 'end)
FETCH next FROM fd_name into @feild_name
end
-- print @tj
if @tj!=''
begin
SET @SQL='DELETE FROM '+@TABLE_NAME+@TJ
print '切记先运行代码看print 出来的SQL确认后再删除数据,即将运行的代码是 '
print '===================================================================='
print @SQL
print '===================================================================='
--切记先运行代码看print 出来的SQL确认后再删除数据
exec(@sql) --修改注释后删除数据
end
set @tj=''
CLOSE fd_name
deallocate fd_name
FETCH next FROM tb_name into @table_name,@table_id
end
close tb_name
deallocate tb_name
展开全部
delete from A where A1='abc' or A2='abc'
delete from B where B1='abc' or B2='abc'
delete from C where C1='abc' or C2='abc' or C3='abc'
这是基本意思。
sqlserver库,可以这样
declare @w as varchar(2000)
set @w='abc'--想删除的字串
delete from A where A1=@w or A2=@w
delete from B where B1=@w or B2=@w
delete from C where C1=@w or C2=@w or C3=@w
go
delete from B where B1='abc' or B2='abc'
delete from C where C1='abc' or C2='abc' or C3='abc'
这是基本意思。
sqlserver库,可以这样
declare @w as varchar(2000)
set @w='abc'--想删除的字串
delete from A where A1=@w or A2=@w
delete from B where B1=@w or B2=@w
delete from C where C1=@w or C2=@w or C3=@w
go
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询