Voici deux petites fonctions de nettoyage de chaine de caractères (suppression en début ou en fin).
CREATE FUNCTION dbo.F_CLEAN_HEADER (@DATA NVARCHAR(256), @CHAR NCHAR(1))
RETURNS NVARCHAR(256)
AS
/******************************************************************************
* Frédéric Brouard - alias SQLpro - http://sqlpro.developpez.com - 2011-05-15 *
*******************************************************************************
* Fonction de nettoyage du début d'une chaine de caractères *
* @DATA : chaine de caractères à nettoyer *
* @CHAR : caractère à supprimer tant qu'il figure au début *
* EXEMPLE : SELECT dbo.F_CLEAN_HEADER('007', '0') => '7' *
*******************************************************************************
* copyright : Frédéric Brouard / SQLpro / SQLspot - http://www.sqlspot.com *
* Expertise, audit, tuning, optimisation, conseil, formation... MS SQL Server *
******************************************************************************/
BEGIN
IF @DATA IS NULL OR @CHAR IS NULL RETURN NULL;
DECLARE @I SMALLINT;
SET @I = 1;
WHILE @I <= LEN(@DATA)
BEGIN
IF SUBSTRING(@DATA, 1, 1) <> @CHAR RETURN @DATA;
ELSE
SET @DATA = SUBSTRING(@DATA, 2, LEN(@DATA) - 1);
SET @I = @I + 1;
END
RETURN @DATA
END
GO
CREATE FUNCTION dbo.F_CLEAN_TRAILER (@DATA NVARCHAR(256), @CHAR NCHAR(1))
RETURNS NVARCHAR(256)
AS
/******************************************************************************
* Frédéric Brouard - alias SQLpro - http://sqlpro.developpez.com - 2011-05-15 *
*******************************************************************************
* Fonction de nettoyage de la fin d'une chaine de caractères *
* @DATA : chaine de caractères à nettoyer *
* @CHAR : caractère à supprimer tant qu'il figure au début *
* EXEMPLE : SELECT dbo.F_CLEAN_TRAILER('7**', '*') => '7' *
*******************************************************************************
* copyright : Frédéric Brouard / SQLpro / SQLspot - http://www.sqlspot.com *
* Expertise, audit, tuning, optimisation, conseil, formation... MS SQL Server *
******************************************************************************/
BEGIN
IF @DATA IS NULL OR @CHAR IS NULL RETURN NULL;
DECLARE @I SMALLINT;
SET @I = LEN(@DATA);
WHILE @I > 1
BEGIN
IF SUBSTRING(@DATA, LEN(@DATA), 1) <> @CHAR RETURN @DATA;
ELSE
SET @DATA = SUBSTRING(@DATA, 1, LEN(@DATA) - 1);
SET @I = @I - 1;
END
RETURN @DATA
END
GO
--------
Frédéric Brouard, SQLpro - ARCHITECTE DE DONNÉES, http://sqlpro.developpez.com/
Expert bases de données relationnelles et langage SQL. MVP Microsoft SQL Server
www.sqlspot.com : modélisation, conseil, audit, optimisation, tuning, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
LTRIM et RTRIM n’enlèvent que les caractères BLANC (espace).
A +
Une petite question : je n’arrive pas à voir les différences par rapport aux fonctions LTRIM et RTRIM, quelles sont-elles ?