我有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
答案 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部分实际上给出了字符串中存在的等号数。