更新包含5个键的所有行

时间:2016-06-26 06:05:47

标签: sql sql-server tsql

我有Ticket表,其中有一些列如下:

ID : int
Body : nvarchar
Type : int

我有很多行,其中Body列的值如下:

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

我想要更新所有行Type列,其中Body列至少包含以下五个键:

IPAddress, ComputerName, GetID, CustomerName, PharmacyCode

2 个答案:

答案 0 :(得分:3)

您可以使用像

这样的简单更新语句来完成
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%'

如果你知道'键'总是按照相同的顺序连接LIKE条件,如此

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

如果您有可能更改数据模型,那么爆炸此密钥和放大器会更好。将值列入自己的表并将其链接回此表,因为它是在适当的关系模型中完成的。

答案 1 :(得分:1)

如果您可以按字符串中显示的=数量计算键值对的数量,则可以使用此查询

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

where部分实际上给出了字符串中存在的等号数。