-2

我有一个临时表#temp321,其中包含如下信息:

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

我也有一个where子句到一个变量中@where_value,比如:

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 回答