Exercice Langage SQL : Les Fonction (Part 1)


Objet:
Travailler avec les Fonction (Partie 1)

Travail à Faire:

  1. Créer le Code pour la Fonction SQL permettant d'extraire le suffixe d'une chaine de charactères. 
  2. Créer la Fonction d'ajout d'une durée (Année, Mois, Jour, Heure, Minute, Seconde) à une date.
  3. Créer une fonction qui permet de retrouver la position du premier chiffre d'une chaine. 
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106--1) 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 possiblesSET @Result = RTRIM(LTRIM(@CHAINEDONNEE))SET @SEPARATEUR = RTRIM(LTRIM(@SEPARATEUR))-- Recherche si le séparateur existe dans la chaine donnéeSET @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ésultatRETURN @ResultEND-- 2) Créer la Fonction d"'"ajout d"'"une durée (Année, Mois, Jour, Heure, Minute, Seconde) à une date.SET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS OFF GOCREATE 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 @RetENDGOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GO-- 3) Créer une fonction qui permet de retrouver la position du premier chiffre d"une chaine. SET ANSI_NULLS ONSET QUOTED_IDENTIFIER ONGOCREATE FUNCTION [dbo].[FN_CHARINDEX_FIRST_NUMERIC] (@NOMDIV nvarchar(30))RETURNS smallintASBEGIN 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 ENDRETURN @jEND-- Ou Bien :CREATE FUNCTION [dbo].[FN_CHARINDEX_FIRST_NUMERIC_V2] (@NOMDIV nvarchar(30))RETURNS smallintASBEGIN RETURN PATINDEX ('%[0123456789]%', @NOMDIV)END
Article publié le 13 Décembre 2011 Mise à jour le Samedi, 17 Décembre 2022 19:08 par GC Team