У меня есть более чем 30 столбцов в моей таблице (SQL-сервер 2008). Тип столбцов является 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)
. Это не проверено, поэтому сначала попробуйте его на тестовой таблице :)
UPDATE xxx
SET col1 = RTRIM(col1),
col2 = RTRIM(col2),
col3 = RTRIM(col3),
...