0

次のコマンドがあるとします

 Declare @input as varchar(500)

  set @input = 'abce,dfg'

  select substring(substring(@input,1,charindex(',',@input)+1),1,2)

内部部分文字列の結果を新しい変数に保存するにはどうすればよいですか?

4

2 に答える 2

0

私が何かを見逃していない限り、あなたはどちらかを行うことができます...

declare @innersub varchar(500)
set @innersub = substring(@input,1,charindex(',',@input)+1)

または...

declare @innersub varchar(500)
select @innersub = substring(@input,1,charindex(',',@input)+1)

次に、使用できます@innersub...

select substring(@innersub,1,2)

更新(コメントのOPからの詳細情報による)

単一の SELECT ステートメントから、変数の設定戻り値の両方を行うことはできません。

以下は常に失敗します...

select field1, @var=field2 from table

編集

テーブルを返すユーザー定義関数の使用について調べましたか?

CREATE FUNCTION dbo.GetSubString ( @input varchar(500) )
RETURNS @result TABLE ( sub1 varchar(500), sub2 varchar(500) )
AS
BEGIN
    INSERT INTO @result (sub1, sub2)
    SELECT substring(substring(@input,1,charindex(',',@input)+1),1,2),
        substring(@input,1,charindex(',',@input)+1)
    RETURN
END

そして、それを次のように呼び出すことができます...

declare @input varchar(500)
set @input = 'abce,dfg'
select sub1, sub2 from dbo.GetSubString(@input)
于 2012-07-13T10:53:09.803 に答える
0
Declare @input as varchar(500),
 @cInnerStr varchar(500)
  set @input = 'abce,dfg'
 Set @cInnerStr = substring(@input,1,charindex(',',@input)+1)
 select @cInnerStr
于 2012-07-13T11:01:25.350 に答える