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))
我想 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))