2016-07-29 9 views
0

Ich möchte nur einige Daten in meine Spalte einfügen, wenn meine Abfrageparameter nicht bereits hinzugefügt wurden.Daten einfügen, wenn sie nicht existieren

Zum Beispiel, wenn meine Zeile enthält:

a=4&b=7&c=9 

und jetzt, wenn Aktualisierung geschieht mit: b = 7 & c = 9, dann sollte ich es nicht anhängen.

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

Aber wenn Update mit d geschieht = 9 & e = 9 dann sollte es anhängen.

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

Meine normale Update-Abfrage ist:

@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 

Wie kann ich hier die Verwendung NICHT Clasue EXIST.

Aber mit nicht existierende Klausel überprüft ganze Zeile, ich möchte nur überprüfen, ob Parameter vorhanden sind, dann fügen Sie es nicht.

+5

, die eine ziemlich schreckliche Art und Weise ist, Daten zu speichern – Lamak

Antwort

1

Ich denke, Sie sind für eine nicht auf der Suche Klausel wie

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 +'%'; 
Verwandte Themen