在SQL 2008中获取字符的最后一个索引的最佳方法是什么?

43
在C#中,我们有String.LastIndexOf方法来获取给定字符串中特定字符位置的最后一个索引。在SQL Server中是否有类似的功能呢?我尝试使用CHARINDEX,但无法实现。

13
嘿,这个“重复”的问题是针对 SQL Server 2008 的,另一个是针对 SQL Server 2000 的。它们之间有所不同。 - Guillermo Gutiérrez
1
请在另一个问题中添加答案。 - JasonMArcher
3个回答

75

有点棘手,但你可以这样做:

REVERSE(SUBSTRING(REVERSE([field]),0,CHARINDEX('[char]',REVERSE([field]))))

我从https://dev59.com/1HNA5IYBdhLWcg3wSrqa中收藏了这个内容,因为它似乎经常出现。 - antinescience
2
这里的答案更加简洁和高效:https://dev59.com/xmvXa4cB1Zd3GeqPI23e#13610627 - Neo

27
DECLARE @x VARCHAR(32) = 'xyzxyzyyythgetdghydgsh';
SELECT LEN(@x) - CHARINDEX('y', REVERSE(@x)) + 1;

0

试着尝试这个,逐步分析结果。


declare @string varchar(max)
declare @subString varchar(max)
set @string = 'this is a duplicated question,      but may get some new answers, since tech chagne from time to time as we know';
set @subString = 'this is a duplicated question,      but may get some new answers, since tech chagne from time to time'
--Find the string.lastIndexof(time)
select LEN(@String)
select LEN(@SubString)
select CHARINDEX('time', REVERSE(@string))
select reverse(@string)
select reverse('time')
SELECT LEN(@string) - CHARINDEX(reverse('time'), REVERSE(@string)) - Len('time') + 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接