SQL Select 字符后的所有内容

SQL Select everything after character

我想 select 位于最右侧的特定字符 (-) 之后的所有内容。

例如

abcd-efgh-XXXX

我想 select XXXX 部分

谢谢!

您可以使用:

select right(col, charindex('-', reverse(col)) - 1)

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
DECLARE @x varchar(100)
SET @x = 'abcd-efgh-XXXX'
SELECT RIGHT(@x, CHARINDEX('-', REVERSE(@x)) - 1)

@thegameiswar 有一个聪明的解决方案,因为我需要逗号分隔列表中的结果。我没有 SQL 2016,所以我让它与用户定义的拆分函数一起使用。

;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

SQL Server Management Studio v15.0.18206.0 (18.4):

RIGHT([col], CHARINDEX('-', REVERSE([col]), -1))