Suppression de caractères parasites en début ou fin de chaine

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  * * * * *

MVP Microsoft SQL Server

2 réflexions au sujet de « Suppression de caractères parasites en début ou fin de chaine »

Laisser un commentaire