В С# у нас есть метод String.LastIndexOf
, чтобы получить последний индекс определенного места символа для данной строки. Есть ли аналогичная функция, чтобы сделать то же самое в SQL Server. Я попытался использовать CHARINDEX
, но не смог его достичь.
Лучший способ получить последний индексный символ в SQL 2008
Ответ 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