SQL Select everything after character
Emily Wong
I'd like to select everything AFTER a certain character (-) that is placed on the most right side.
Eg.
abcd-efgh-XXXXAnd I'd like to select the XXXX part
Thanks!
56 Answers
You can use:
select right(col, charindex('-', reverse(col)) - 1) 1 DECLARE @x varchar(100)
SET @x = 'abcd-efgh-XXXX'
SELECT RIGHT(@x, CHARINDEX('-', REVERSE(@x)) - 1) 0 Using string split available from 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 1 @thegameiswar had a clever solution, since I needed the results from a comma delimited list. I don't have SQL 2016, so I made it work with a user defined split function.
;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 select substr('Prueba,Prueba2',instr('Prueba,Prueba2',',') + 1) from dual 2 SQL Server Management Studio v15.0.18206.0 (18.4):
RIGHT([col], CHARINDEX('-', REVERSE([col]), -1))