Ich möchte alles auswählen, nachdem ein bestimmtes Zeichen (-) ganz rechts platziert wurde.
Z.B.
abcd-efgh-XXXX
Und ich möchte den XXXX
-Teil auswählen
Vielen Dank!
Sie können verwenden:
select right(col, charindex('-', reverse(col)) - 1)
DECLARE @x varchar(100)
SET @x = 'abcd-efgh-XXXX'
SELECT RIGHT(@x, CHARINDEX('-', REVERSE(@x)) - 1)
Verwenden von String Split verfügbar ab SQLServer 2016
;with cte
as
(
select
*,row_number() over (order by (select null)) as rownum
from string_split('abcd-efgh-XXXX','-')
)
select top 1 * from cte
order by rownum desc
@thegameiswar hatte eine clevere Lösung, da ich die Ergebnisse von einer durch Kommas getrennten Liste benötigte. Ich habe kein SQL 2016, also habe ich es mit einer benutzerdefinierten Splitfunktion funktionieren lassen.
;with cte
as
(
select
*,row_number() over (order by (select null)) as rownum
from database..[fn_SplitDelimitedList](@CommaDelimitedList,',')
)
select * from cte
order by rownum desc