我得到一个有JSON字段的表。字段的默认值是"NULL"
-现在我想更新JSON数据的单个字段。
| ----------------- |
| [int] | [JSON] |
| xy | ipdata |
| ----------------- |
所以这个领域可能是这样的:
{ ip: "233.233.233.233", "data": "test", "name": "Peterson", "full_name": "Hanson Peterson" }
所以我想更新IP。
update table set ipdata = JSON_SET(ipdata, "$.ip", "newIp") where xy = 2;
但是如果字段为空会发生什么?上面的查询似乎并没有“创建”一个只有字段IP的新JSON。它什么也不做。
如果字段为空,我如何告诉mySql插入
{"ip": "newIp"}
,否则只需更新ip
json键? 最佳答案
您可以使用Case .. When
来处理Null
。当字段为null
时,您可以创建Json_object()
并设置它:
UPDATE table
SET ipdata = CASE WHEN ipdata IS NULL THEN JSON_OBJECT("ip", "newIp")
ELSE JSON_SET(ipdata, "$.ip", "newIp")
END
WHERE xy = "xy";