SQL Server: Как выполнить Rtrim на всех varchar столбцах таблицы

У меня есть более чем 30 столбцов в моей таблице (SQL-сервер 2008). Тип столбцов является varchar (x). Я знаю, что в каждом столбце существует два дополнительных пространства в конце значения столбца. Как использовать rtrim функционируют для всех столбцов и сохранить эту модификацию в эту существующую таблицу?

Править: существует ли способ сделать это с помощью хранимой процедуры или курсора, где я не должен вручную объявлять все столбцы?

19
задан Shiva 6 March 2015 в 07:48
поделиться

2 ответа

Для общего подхода вы можете использовать подобный сценарий, чтобы сгенерировать для вас оператор для данной таблицы (полезно, если у вас много столбцов!) :

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) . Это не проверено, поэтому сначала попробуйте его на тестовой таблице :)

33
ответ дан 30 November 2019 в 02:24
поделиться
UPDATE xxx
  SET col1 = RTRIM(col1),
      col2 = RTRIM(col2),
      col3 = RTRIM(col3),
      ...
20
ответ дан 30 November 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: