我的表(SQL Server 2008)中有30多个列。列类型为varchar(x)。我知道每一列的末尾都有两个额外的空格。如何对所有列使用rtrim函数并将此修改保存到此现有表中?
编辑:有没有一种方法可以使用存储过程或游标,而不必手动声明所有列?
对于一般方法,可以使用这样的脚本为给定的表为您生成语句(如果您有许多列,则很有用!):
DECLARE @SQL VARCHAR(MAX) DECLARE @TableName NVARCHAR(128) SET @TableName = 'YourTableName' SELECT @SQL = COALESCE(@SQL + ',[', '[') + COLUMN_NAME + ']=RTRIM([' + COLUMN_NAME + '])' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TableName AND DATA_TYPE = 'varchar' SET @SQL = 'UPDATE [' + @TableName + '] SET ' + @SQL PRINT @SQL
那只会打印出SQL语句。然后,您可以复制+运行该语句,也可以只运行EXECUTE(@SQL)。这是未经测试的,因此只需先在测试表上进行尝试即可:)
EXECUTE(@SQL)