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
SQL Select everything after character
提问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 XXXX
part
我想选择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
;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))