-2

#temp321以下のような情報を含む一時テーブルがあります。

id|sourceFields|DestinationFields
---------------------------------
1 |c2          |c102
-------------------------
2 | c4         |c104
-----------------------

@where_valueまた、次のような変数に where 句があります。

c1='v11' and c2='v22' and c3='v33' and c4='v44'

今、 @where_value への宛先フィールド情報のみが必要です。

@where_value に期待される結果は次のとおりです。c102='v22' and c104='v44'

どうすれば入手できますか。助けてください。

4

1 に答える 1

0
Select @Var=@Var + CAST(DestinationFields as Varchar(30))+'='+ dbo.F_GetValue4Key(@where_value,sourceFields) +' AND '
from #temp321

Select @Var= SubString(@var,1,LEN(@var)-4)

Wherestring が次のようになっていると仮定します。

Select @where_value ='c1=''v11'' and c2=''v22'' and c3=''v33'' and c4=''v44'''  

この機能を使用して

Create Function F_GetValue4Key(@p varchar(2000),@k varchar(2000)) Returns Varchar(50) as
begin
  Declare @Result Varchar(50)
  Declare @pos int
  Declare @pos1 int
  Declare @pos2 int
  Select @pos=CHARINDEX( @k+'=',@p)
  Select @pos1=CHARINDEX( '''',@p,@pos)
  Select @pos2=CHARINDEX( '''',@p,@pos1+1)

  Select @Result=SUBSTRING(@p,@pos1,@pos2-@pos1+1)
  Return @Result
end
于 2013-01-09T15:01:33.487 に答える