Mysql - 更新+插入json

标签 mysql node.js json sql-update

我得到了一个包含 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/

相关文章:

php - mysql 查询中不显示的行

php - 使用 PHP、AJAX 和 MySQL 检查更新的最快方法

mysql - 安全的加密数据库设计

node.js - Windows 7 NODE_PATH 全局变量设置但在 package.json 中无法识别

javascript - 我应该将数据存储在 JSON 文件中还是 MySQL 数据库中?

mysql - Apache 钻 - AssertionError : Relational expression

node.js - 同时向 Node 中的多个客户端提供文件

node.js - 当我使用 npm-run-all 时,如何使用 VSCode 启用 Electron Main 和 Renderer 的调试?

java - 如何通过 RestEASY 将带有元音符号 (ü, ö, ä) 的 JSON 发送到我的服务器?

json - 如何使用 jq 获取根 key 和 key 类型