Bisher war T-SQL nichts für mich. Ich fand alleine die Optik schon sehr gewöhnungsbedürftig, überall diese @-Zeichen... Aber wenn man es sich mal etwas genauer ansieht ist es eigentlich gar nicht mehr so kompliziert.
Die folgende Funktion zerlegt eine Belegnummer in der Form von AB-YYYY-012345 oder ABC-YYYY-012345 so, dass nur YYYY zurückkommt, also das Jahr.
Dazu verwende ich die T-SQL Funktion PATINDEX, welche den Index einer Zeichenfolge innerhalb eines Strings zurückgibt (ähnlich InStr).
Wir suchen also nach dem ersten Bindestrich in ABC-YYYY-012345. Der Suchparameter muss daher '%-%' heißen, da vor und nach dem Bindestrich beliebiger Text stehen kann.
Viele weitere String-Funktionen findet man auf MSDN.
Create Function [dbo].[f_GetBelegnummerJahreszahl](@Belegnummer varchar(50)) returns varchar(50) as Begin -- Variablen deklarieren Declare @RetVal varchar(50) Declare @Dummy varchar(50) Declare @FirstFound Integer -- Dummystring belegen (könnte man sich auch sparen und gleich mit @Belegnummer arbeiten) Set @Dummy = @Belegnummer -- Ersten Bindestrich suchen und merken Set @FirstFound = PATINDEX('%-%', @Dummy) -- Alles ab dem ersten Bindestrich + 1, Länge 4 zurückgeben (das ist die Jahreszahl) Set @Dummy = SUBSTRING(@Dummy, @FirstFound+1, 4) -- Rückgabewert setzen Set @RetVal = @Dummy -- und zurückgeben return @RetVal end
0 Antworten zu String Operationen mit T-SQL
Antwort hinterlassen