Situatie
Mai jos este o functie ce primeste ca prim parametru un string, un array sau o coloana de tip character. Al doilea parametru fiind un caracter delimitator, iar al treilea fiind un numar intreg, astfel ca functia returneaza bucata de string aflata la pozitia setata in parametrul numarul 3.
Daca parametrul 3 este un numar ce depaseste numarul de delimitatori al stringului, functia va afisa ultima bucata de string din array/coloana.
Solutie
— select dbo.StringArray (‘asdd;d;g;h;rtyy;f;g;u’,’;’,11)
create Function
dbo.StringArray
(
@pstrValue Varchar(1000),
@pstrDelim varchar(1),
@pintPosition Int
)
Returns Varchar(200)
As
Begin
Declare @strDelim varchar(1),
@Count Int,
@intPosition Int,
@strReturn varchar(200),
@intStartLocation Int
Select @strDelim = @pstrDelim,@Count = 1,@intPosition = 0,@intStartLocation = 1
While ( @Count >0 and @intPosition < @pintPosition and Len(@pstrValue) > @intPosition )
Begin
Select @Count = CharIndex(@strDelim,@pstrValue,@intStartLocation)
If @Count > 0
Begin
Select @intPosition = @intPosition +1
Select @strReturn = Substring(@pstrValue,@intStartLocation ,@Count -@intStartLocation)
Select @intStartLocation = @Count + 1
End
Else
Select @strReturn = Substring(@pstrValue,@intStartLocation,Len(@pstrValue))
End
Return @strReturn
End
Leave A Comment?