Créer le Code pour la Fonction SQL permettant d’extraire le suffixe d’une chaine de charactères.
ALTER FUNCTION dbo.Fx_RenvoieSuffixe (@CHAINEDONNEE AS VARCHAR(500), @SEPARATEUR AS VARCHAR(50)) RETURNS VARCHAR(500) BEGIN -- Déclare les variables locales DECLARE @Result VARCHAR(500) DECLARE @IndexSeparateur INT -- Assigne les chaines d'origine sans les blancs possibles SET @Result = RTRIM(LTRIM(@CHAINEDONNEE)) SET @SEPARATEUR = RTRIM(LTRIM(@SEPARATEUR)) -- Recherche si le séparateur existe dans la chaine donnée SET @IndexSeparateur = CHARINDEX (@SEPARATEUR, @Result) IF @IndexSeparateur > 0 -- Si le séparateur existe je fourni tout ce qui est après cette chaine SELECT @Result = SUBSTRING(@Result, CHARINDEX (@SEPARATEUR, @Result)+LEN(@SEPARATEUR), LEN(@Result)- CHARINDEX(\ , @Result)) ELSE SELECT @Result = @Result -- Renvoi le résultat RETURN @Result END
Créer la Fonction d’ajout d’une durée (Année, Mois, Jour, Heure, Minute, Seconde) à une date.
SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE FUNCTION [dbo].[AddDateTimeDuree] (@Dt Datetime, @an int=0, @mois int=0, @jour int=0,@heure int=0, @minute int=0, @seconde int=0) RETURNS DateTime AS BEGIN DECLARE @Ret Datetime IF @Dt IS NULL SET @Ret = NULL ELSE SET @Ret = dateadd(second,isnull(@seconde,0),dateadd(minute,isnull(@minute,0),dateadd(hour,isnull(@heure,0),dateadd(day, isnull(@jour,0), dateadd(month, isnull(@mois,0), dateadd(year, isnull(@an,0), @Dt)))))) RETURN @Ret END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
Créer une fonction qui permet de retrouver la position du premier chiffre d’une chaine.
SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[FN_CHARINDEX_FIRST_NUMERIC] (@NOMDIV nvarchar(30)) RETURNS smallint AS BEGIN DECLARE @nom nvarchar(30) DECLARE @i smallint DECLARE @j smallint SET @i = 1 SET @j = 0 WHILE @i < len(@nomdiv) BEGIN DECLARE @car nvarchar(1) SET @car = (SUBSTRING(@NOMDIV, @i, @i) ) IF @car IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '0') BEGIN SET @j = @i BREAK END ELSE SET @i = @i + 1 END RETURN @j END -- Ou Bien : CREATE FUNCTION [dbo].[FN_CHARINDEX_FIRST_NUMERIC_V2] (@NOMDIV nvarchar(30)) RETURNS smallint AS BEGIN RETURN PATINDEX ('%[0123456789]%', @NOMDIV) END