我有一个我想修剪的字符串。我正在寻找的是从字符串到最后Y
获取值的方法。
例如:
AB Y bc Y dc Y1
- > AB Y bc Y dc Y
ABYBCY
- > ABYBCY
ABY BCY DC
- > ABY BCY
我正在尝试下面的查询,但我得不到我需要的东西。
DECLARE @name varchar(200)='RAM, Y SHAM Y AB'
SELECT @name
,right(@name, CHARINDEX('Y', @name) - 1) AS [Surname]
,REPLACE(SUBSTRING(@name, CHARINDEX(',', @name), LEN(@name)), ',', '') AS [FirstName]
答案 0 :(得分:3)
您可以使用stuff()
和reverse()
执行此操作。
像这样的东西
SELECT STUFF(
@name,
LEN(@name) - CHARINDEX('Y', REVERSE(@name)),
LEN(@name),
''
) string
注意:这假设给定字符串中至少有一个“Y”。
答案 1 :(得分:1)
您还可以尝试以下方式:
Select substring(@name,1, len(@name) - (charindex('Y', reverse(@name)))+1)
答案 2 :(得分:0)
只需使用CHARINDEX和SUBSTRING函数,我们就可以实现结果
declare @t table (Val varchar(30))
insert into @t (Val) values
('AB Y bc Y dc Y1'),
('ABYCY1'),
('ABY BCY DC')
select REVERSE(SUBSTRING(REVERSE(Val),CHARINDEX('Y',REVERSE(Val)),LEN(Val)))
from @t