小编典典

SQL Server:如何对表的所有varchar列执行Rtrim

sql

我的表(SQL Server
2008)中有30多个列。列类型为varchar(x)。我知道每一列的末尾都有两个额外的空格。如何对所有列使用rtrim函数并将此修改保存到此现有表中?

编辑:有没有一种方法可以使用存储过程或游标,而不必手动声明所有列?


阅读 164

收藏
2021-03-17

共1个答案

小编典典

对于一般方法,可以使用这样的脚本为给定的表为您生成语句(如果您有许多列,则很有用!):

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)。这是未经测试的,因此只需先在测试表上进行尝试即可:)

2021-03-17