Velvet Star Monitor

Standout celebrity highlights with iconic style.

updates

SQL Select everything after character

Writer Emily Wong

I'd like to select everything AFTER a certain character (-) that is placed on the most right side.

Eg.

abcd-efgh-XXXX

And I'd like to select the XXXX part

Thanks!

5

6 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))

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy