Подтвердить что ты не робот

Лучший способ получить последний индексный символ в SQL 2008

В С# у нас есть метод String.LastIndexOf, чтобы получить последний индекс определенного места символа для данной строки. Есть ли аналогичная функция, чтобы сделать то же самое в SQL Server. Я попытался использовать CHARINDEX, но не смог его достичь.

4b9b3361

Ответ 1

Немного сложно, но вы можете сделать что-то вроде:

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

Ответ 2

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

Ответ 3

Попробуйте это, проанализируйте результат шаг за шагом.


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