2016-06-26 25 views
0

Ich habe Ticket Tabelle, die einige Spalten wie folgt hat:wobei 5 Tasten enthält

ID : int 
Body : nvarchar 
Type : int 

ich viele Zeilen, wo die Body Spalte Wert wie folgt hat:

IPAddress = sometext, ComputerName = sometext , GetID = sometext, CustomerName=sometext-sometext , PharmacyCode = 13162900 

Ich möchte Aktualisieren Sie die Spalte Type aller Zeilen, wobei die Body Spalte mindestens fünf der folgenden Schlüssel enthält:

IPAddress, ComputerName, GetID, CustomerName, PharmacyCode 

Antwort

3

Man könnte es mit einer einfachen Update-Anweisung tun, wie die

UPDATE Ticket 
SET Type = 4 
WHERE Body LIKE '%IPAddress%' 
    and Body LIKE '%ComputerName%' 
    and Body LIKE '%GetID%' 
    and Body LIKE '%CustomerName%' 
    and Body LIKE '%PharmacyCode%' 

, wenn Sie die ‚Schlüssel‘ sind immer in der gleichen Reihenfolge kennen Sie die LIKE Bedingungen wie

UPDATE Ticket 
SET Type = 4 
WHERE Body LIKE '%IPAddress%ComputerName%GetID%CustomerName%PharmacyCode%' 

so verketten könnten, wenn Sie haben die Möglichkeit, das Datenmodell zu ändern, es wäre viel besser, diese Schlüssel & Wert Spalte in eine eigene Tabelle zu explodieren und es zurück zu dieser Tabelle zu verknüpfen, wie es in einem richtigen relationalen Modell getan wird.

+0

danke, ite funktioniert gut. –

1

Wenn Sie Reihe von Schlüsselwertpaar nach der Anzahl der = in der Zeichenfolge berechnen können Sie diese Abfrage

Update tblname set col=val where len(colname) - len(replace(colname,'=','')>5 

Der where Teil gibt tatsächlich Anzahl von gleichen Zeichen in der Zeichenfolge verwenden könnten.

+0

und Ihre Antwort ist gut, danke –