SQL Server: How to perform Rtrim on all varchar columns of a table

前端 未结 5 1960
眼角桃花
眼角桃花 2020-12-30 01:40

I have over 30 columns in my table (sql server 2008). Columns type are varchar(x). I know that in every column there is two extra spaces at the end of column value. How to u

5条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-30 02:06

    We can have stored procedure to trim specific table under specific schema. If we have different schema names other than default dbo schema, it is better to use this SP by passing schema name and table name. This performs both LTRIM and RTRIM. This SP would check char, nchar, varchar, nvarchar columns.

    CREATE PROCEDURE [dbo].[TrimAllColumnsOfTable] @SchemaName Varchar(100),@TableName Varchar(100)
    AS
    BEGIN
    
    DECLARE @SQL VARCHAR(MAX)
    SELECT @SQL = COALESCE(@SQL + ',[', '[') +
                  COLUMN_NAME + ']=LTRIM(RTRIM([' + COLUMN_NAME + ']))'
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA = @SchemaName AND TABLE_NAME = @TableName AND DATA_TYPE Like '%char%'
    
    SET @SQL = 'UPDATE [' + @SchemaName + '].[' + @TableName + '] SET ' + @SQL
    
    EXEC (@SQL)
    
    END
    

    USAGE: [TrimAllColumnsOfTable] 'SchemaName','TableName'

提交回复
热议问题