0

次の例があります。

DECLARE @String varchar(100) = 'GAME_20131011_Set - SET_20131012_Game'

SELECT SUBSTRING(@String,0,CHARINDEX('_',@String))
SELECT SUBSTRING(@String,CHARINDEX('- ',@STRING),CHARINDEX('_',@STRING))

「GAME」と「SET」という単語を取得したい (「-」の両側から最初の「_」の前の最初の単語。

「GAME」を取得していますが、「SET」に問題があります

更新: 「ゲーム」と「セット」は単なる例であり、これらの単語は異なる場合があります。

DECLARE @String1 varchar(100) = 'GAMEE_20131011_Set - SET_20131012_Game' -- Looking for 'GAME' and 'SET'
DECLARE @String2 varchar(100) = 'GAMEE_20131011_Set - SETT_20131012_Game' -- Looking for 'GAMEE' and 'SETT'
DECLARE @String2 varchar(100) = 'GAMEEEEE_20131011_Set - SETTEEEEEEEE_20131012_Game' -- Looking for 'GAMEEEEE' and 'SETTEEEEEEEE'
4

3 に答える 3

1

これを試して

SELECT SUBSTRING(@String,0,CHARINDEX('_',@String))
SELECT SUBSTRING(@String,CHARINDEX('- ',@STRING)+1, CHARINDEX('_',@STRING)-1)
于 2013-10-11T19:59:28.820 に答える
1

charindex検索を開始する文字列内の位置を示すオプションの 3 番目のパラメーターを取ります。これを 1 つのステートメントにまとめることもできますが、3 つのステートメントを使用すると読みやすくなります。

Declare @start int = charindex('-', @string) + 2;
Declare @end int = charindex('_', @string, @start);

Select substring(@string, @start, @end - @start);

Example SQLFiddle

于 2013-10-11T19:59:28.863 に答える