ltrim izquierda extraer derecha caracteres sql sql-server sql-server-2008 string

izquierda - trim sql server 2008



SQL Server: cómo realizar Rtrim en todas las columnas varchar de una tabla (5)

Es perfecto ... Pero recuerda poner también la cláusula where :

COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA+''.''+TABLE_NAME),COLUMN_NAME,''IsComputed'') = 0

De lo contrario, obtendrá un error si la tabla tiene una columna calculada del tipo "%char%" .

Tengo más de 30 columnas en mi tabla (servidor SQL 2008). Tipo de columnas son varchar (x). Sé que en cada columna hay dos espacios adicionales al final del valor de la columna. ¿Cómo usar la función rtrim para todas las columnas y guardar esta modificación en esta tabla existente?

Edición: ¿hay alguna forma de hacerlo utilizando un procedimiento almacenado o un cursor donde no tenga que declarar manualmente todas las columnas?


La respuesta aceptada funciona bien. Me encontré con un problema con una tabla temporal que se llama el mismo nombre. Puedes añadir

and TABLE_SCHEMA = ''dbo''

Y eso se librará de la colisión en los nombres de las mesas.


Podemos tener un procedimiento almacenado para recortar specific table specific schema bajo specific schema . Si tenemos diferentes nombres de esquema distintos del esquema dbo predeterminado, es mejor usar este SP pasando el nombre de esquema y el nombre de la tabla. Esto realiza tanto LTRIM como RTRIM . Este SP verificará las nchar char , nchar , varchar , nvarchar .

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

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


Para un enfoque genérico, puedes usar un script como este para generar la declaración para ti, para una tabla dada (¡útil si tienes muchas columnas!):

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

Eso solo imprimirá la declaración SQL. Puede copiar y ejecutar la instrucción, o simplemente EXECUTE(@SQL) . Esto no se ha probado, así que pruébelo primero en una tabla de prueba :)


UPDATE xxx SET col1 = RTRIM(col1), col2 = RTRIM(col2), col3 = RTRIM(col3), ...