SQL 选择字符后的所有内容

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/38973852/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-01 04:47:34  来源:igfitidea点击:

SQL Select everything after character

sqlsql-server-2016

提问by coblenski

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 XXXXpart

我想选择XXXX部分

Thanks!

谢谢!

回答by Gordon Linoff

You can use:

您可以使用:

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

回答by ADyson

DECLARE @x varchar(100)
SET @x = 'abcd-efgh-XXXX'
SELECT RIGHT(@x, CHARINDEX('-', REVERSE(@x)) - 1)

回答by KirstieBallance

@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.

@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

回答by TheGameiswar

Using string split available from SQLServer 2016

使用 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

回答by user11790343

select substr('Prueba,Prueba2',instr('Prueba,Prueba2',',') + 1) from dual

回答by meraxes

SQL Server Management Studio v15.0.18206.0 (18.4):

SQL Server Management Studio v15.0.18206.0 (18.4):

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

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