当前位置:首页 --> SQLServer --> 正文

同时更新整个数据库字符类型的值

2008-9-10 16:02:00 来源:原创 浏览次数: 评论数: 字号:[ ]

declare @string table(id int IDENTITY(1,1), tablename varchar(128), fieldName varchar(128))
declare @fields table(id int identity(1,1), fieldName varchar(128))
declare @id int, 
 @tableName varchar(128), 
 @fieldName varchar(128), 
 @updateSetFields varchar(1000)
insert into @string(tableName, fieldName)
select sysobjects.name, syscolumns.name
from sysobjects 
  inner join syscolumns on sysobjects.id=syscolumns.id 
  inner join systypes on syscolumns.xtype = systypes.xtype
where sysobjects.xtype = 'U'  and systypes.name in ('varchar', 'nvarchar')

WHILE(EXISTS(select * from @String))
BEGIN
 SET @updateSetFields = ''
 select top 1 @id=id, @tableName=tableName, @fieldName=fieldName from @string
 insert into @fields(fieldName) select fieldName from @string where tablename = @tableName
 WHILE( EXISTS(select * from @fields))
 BEGIN
  SELECT top 1 @id=id, @fieldName=fieldName from @fields
  SET @updateSetFields = ',' + @FieldName + '= RTRIM(LTRIM('+ @fieldName +')) '
  delete @fields where id = @id
 END
 delete @string where tableName = @tableName
 SET @updateSetFields = SUBSTRING(@updateSetFields, 2, LEN(@updateSetFields)) 
 EXEC('UPDATE '+ @tableName + ' SET ' + @updateSetFields )
END

?
?