[英]mysql JSON_SET can't insert into column with NULL value(5.7+)
我正在探索較新的 mysql 服務器的 JSON 功能。 但是遇到了一個非常初級的問題。
當我不知道當前值是否為 NULL 時,如何將 {"key":"value"} 插入 JSON 列?
該表僅供說明:
CREATE TABLE `testjson` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`extra` JSON NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
使用 NULL 和有效的 json 值測試數據。
| id | extra |
| -: | - |
| 1 | (NULL) |
| 2 | {"name": "james"} |
期望的結果:
| id | extra |
| -: | - |
| 1 | {"age": 87} |
| 2 | {"age": 87, "name": "james"} |
現在,我嘗試將 {"age":87} 添加到所有行中:
UPDATE testjson
SET extra = JSON_SET(extra,'$.age', 87)
;
UPDATE testjson
SET extra = JSON_MERGE(extra,JSON_OBJECT('age', 87)),
;
以上都不會更新 NULL 字段。 試圖將列默認設置為{}
,但這是不允許的。
因為 NULL 不是有效的 JSON 數據,所以 mysql JSON 函數都不起作用: https : //dev.mysql.com/doc/refman/5.7/en/json-function-reference.html
我目前的解決方法是在插入之前將 NULL 設置為{}
,但這很愚蠢。 一個簡單的更新不應使用兩個查詢。
你們是怎么處理這件事的?
使用合並:
UPDATE testjson SET extra = JSON_SET(COALESCE(extra, '{}'), '$.age', 87);
SET extra = JSON_SET(IFNULL(extra, "{}"), "$.age", 87)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.