2016-07-29 64 views
0

只有当我的查询参数尚未添加时,我想在列中插入一些数据。插入数据(如果不存在)

例如,如果我的行包含:

a=4&b=7&c=9 

和现在,当更新发生与:B = 7 & C = 9,然后我不应该追加它。

o/p:a=4&b=7&c=9 

但是,如果更新d发生= 9 & E = 9 那么它应该追加它。

o/p : a=4&b=7&c=9&d=9&e=9 

我的正常更新查询:

@AdditionalParams = 'b=7&c=9' 
SELECT @id = mid FROM Table2 WHERE sid = @SId 
       AND cid = @CId; 

      UPDATE Table1 
      SET additional_params = CONCAT (
        additional_params 
        ,iif(additional_params IS NULL, NULL, '&') 
        ,@AdditionalParams 
        ) 
      WHERE mid = @id 

如何使用这里的NOT EXIST Clasue。

但与不存在的子句它检查整行,我只是想检查参数是否存在,然后不插入它。

+5

这是存储数据的非常可怕的方式 – Lamak

回答

1

我猜你正在寻找一个不喜欢条款

declare @AdditionalParams varchar(50) = 'b=7&c=8' 
SELECT @id = mid 
    FROM Table2 
    WHERE sid = @SId 
    AND cid = @CId; 

    UPDATE Table1 
    SET additional_params = CONCAT (
        additional_params 
        ,iif(additional_params IS NULL, NULL, '&') 
        ,@AdditionalParams 
        ) 
    WHERE mid = @id 
    and additional_params not like '%'+ @AdditionalParams +'%';