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

Sql server 查找并替换存储过程[MSSQL]中的值,sql-server,stored-procedures,Sql Server,Stored Procedures,我有一个temp表temp321,其中包含如下信息: id|sourceFields|DestinationFields --------------------------------- 1 |c2 |c102 ------------------------- 2 | c4 |c104 ----------------------- 此外,我将where子句放入变量@where_值中,如: 现在我只需要将destinationfields信息放入@wher

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

id|sourceFields|DestinationFields
---------------------------------
1 |c2          |c102
-------------------------
2 | c4         |c104
-----------------------
此外,我将where子句放入变量@where_值中,如:

现在我只需要将destinationfields信息放入@where\u值中

@where_值为:c102='v22'和c104='v44'的预期结果

我怎样才能得到它。请帮忙

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)
假设您的where字符串如下所示:

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

请发布存储过程定义。我不确定,您想要什么类型的定义。我必须将其放入存储过程中。就是这样。您的问题标题提到了一个存储过程…我们可以得到存储过程代码吗?或者您用来从表中选择的代码?该过程几乎有154行。很难发布。这只是过程的一部分中的一个问题。好的,发布相关部分或完整代码。当我们没有关于这个问题的完整信息时,很难提供帮助。对不起。您可以更改代码。因为它的结果显示c2='c102'和c4='c104'。但我的预期结果是:c102='v22'和c104='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