我的数据库里有很多的表里有相应的三个字段matid,ModelID,ColorID(此三个字段不一定是同时存在于一个表中),我想把所有的这三个字段里有字母为'OO'的改成数字'00'。请高手指教!
如何将SQL server数据库中所有表的相同字段做个修改?
- 提问者网友:蓝莓格格巫
- 2021-07-16 02:57
- 五星知识达人网友:底特律间谍
- 2021-07-16 04:29
用 级联更新 三个表 用 inner join 连接
- 1楼网友:千夜
- 2021-07-16 07:00
用SP_RENAME '表名。列名' '新列名' COLUMN
我想到的就这种方法。可能还是一样的麻烦。
建议,建议而已!
- 2楼网友:青尢
- 2021-07-16 05:36
这是一个查询所有表中所有字段里面包含“a”的语句,你改一下,将执行结果变成一个动态sql,就可以用了。
SELECt a.name AS columnname,object_name(a.id)AS tablename INTO t FROM syscolumns a,
sysobjects b,
systypes c
WHERe a.id=b.id
AND a.xtype=c.xtype
AND b.xtype='u'
AND c.name IN('varchar','nvarchar','char','nchar','text','ntext')
AND object_name(a.id)<>'t'
go
CREATE FUNCTION udf_genSQL(@tableName varchar(1000),@keyword varchar(1000))
returns varchar(8000)
AS
begin
declare @sql varchar(8000)
SET @sql='select * from '+@tableName +' where 1=1 '
SELECt @sql=@sql+' or '+
columnname +' like ''%'+@keyword+'%''' FROM t
WHERe tablename=@tablename
RETURN @sql
end
go
SELECt dbo.udf_genSQL(tableName,'a') FROM t GROUP BY tablename
DROP TABLE t
DROP FUNCTION dbo.udf_genSQL