dizesinde son dizgeli karakter elde etmenin en iyi yolu nedir? C# 'de, belirli bir karakter dizisi için verilen bir dizinin son dizinini almak için String.LastIndexOf
yöntemine sahibiz. SQL Server'da benzer bir işlev var mı. CHARINDEX
kullanmayı denedim ama başaramadı.SQL 2008
Q
SQL 2008
43
A
cevap
74
, ancak böyle bir şey yapabileceğini:
REVERSE(SUBSTRING(REVERSE([field]),0,CHARINDEX('[char]',REVERSE([field]))))
+0
http://stackoverflow.com/questions/1024978/find-index-of-last-occurrence-of-a-sub-string-using-t-sql adresinden saklandım, çünkü oldukça sık görünüyor gibi görünüyor . – antinescience
+2
Burada cevap daha kısa ve etkili: http://stackoverflow.com/a/13610627/197591 – Neo
28
DECLARE @x VARCHAR(32) = 'xyzxyzyyythgetdghydgsh';
SELECT LEN(@x) - CHARINDEX('y', REVERSE(@x)) + 1;
0
, bu bir deneyin adım sonuç adım analiz edin.
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
Hey, "çoğaltılamaz" sorusu SQL Server 2008 içindir ve diğeri aralarında bir fark vardır SQL Server 2000 içindir. –
Yani diğer soruya bir cevap ekleyin. – JasonMArcher