Sql server 2005 - supprimer tous les characteres vides a la fin des champs texte (varchar ou nvarchar) d'une base

Contenu du snippet

Dans certains cas de chargement de données provenant de bases fonctionnant en taille fixe (fichier plat provenant de SAP, Export de bases DB2, fichier CSV en taille fixe, ...), les données de type VARCHAR ou NVARCHAR peuvent avoir des espaces.
Ceci peut prendre beaucoup de place pour de très gros volumes et poser des problèmes pour les champs de comparaison, ...

Ce script a pour but de vous permettre de tronquer ces espaces afin de ne laisser que les données dans les cases.
Il est fourni pour SQL Server 2005, sa correspondance en SQL Server 2000 demande une modification de la requête d'alimentation.
La version 2000 est disponible ici :
- http://www.sqlfr.com/code.aspx?ID=41544

Source / Exemple :


USE [MABASE]
GO

DECLARE @SQLCMD		AS VARCHAR(MAX)	

DECLARE CURSORLISTCHEMA CURSOR FOR SELECT 
   'UPDATE ['+ TABLE_CATALOG +'].['+ TABLE_SCHEMA +'].['+ TABLE_NAME +'] SET ['+ COLUMN_NAME +']=RTRIM(['+ COLUMN_NAME +'])' AS SQL 
   FROM INFORMATION_SCHEMA.COLUMNS 
   WHERE (UPPER(DATA_TYPE) = 'VARCHAR'
   OR UPPER(DATA_TYPE) = 'NVARCHAR')

OPEN CURSORLISTCHEMA
FETCH NEXT FROM CURSORLISTCHEMA INTO @SQLCMD
WHILE (@@fetch_status >= 0) 
	BEGIN 
		PRINT @SQLCMD
		EXECUTE(@SQLCMD)
		FETCH NEXT FROM CURSORLISTCHEMA INTO @SQLCMD
	END
CLOSE CURSORLISTCHEMA
DEALLOCATE CURSORLISTCHEMA

Conclusion :


Bon coding

Romelard Fabrice [MVP]

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.