43

C# にはString.LastIndexOf、特定の文字列の特定の文字位置の最後のインデックスを取得するメソッドがあります。SQL Serverで同じことを行う同様の機能はありますか? 使用してみCHARINDEXましたが、達成できませんでした。

4

3 に答える 3

75

少しトリッキーですが、次のようなことができます。

REVERSE(SUBSTRING(REVERSE([field]),0,CHARINDEX('[char]',REVERSE([field]))))
于 2013-03-29T19:00:44.223 に答える
27
DECLARE @x VARCHAR(32) = 'xyzxyzyyythgetdghydgsh';
SELECT LEN(@x) - CHARINDEX('y', REVERSE(@x)) + 1;
于 2013-03-29T19:01:00.653 に答える
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
于 2013-03-29T19:16:06.733 に答える