查找并替换存储过程中的值[MSSQL]

时间:2013-01-09 14:46:50

标签: sql-server stored-procedures

我有一个临时表#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'

我怎么能得到它。请帮助。

1 个答案:

答案 0 :(得分: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