我得到了一个包含 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;
但是如果字段为 NULL 会发生什么?上面的查询似乎并没有“创建”一个只有 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";
关于Mysql - 更新+插入json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53060739/