新しいmysqlサーバのJSON機能を調べています。しかし、非常に初歩的な問題に遭遇する。mysql JSON_SETはNULL値(5.7+)のカラムに挿入できません
現在の値がNULLかどうかわからないときは、どのように{"key": "value"}をJSON列に挿入しますか? NULLと有効なJSON値
CREATE TABLE `testjson` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`extra` JSON NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
試験データ:
テーブルは、単に例示のためのものです。
| id | extra |
| -: | - |
| 1 | (NULL) |
| 2 | {"name": "james"} |
望ましい結果は:すべての行に:
| id | extra |
| -: | - |
| 1 | {"age": 87} |
| 2 | {"age": 87, "name": "james"} |
は今、私は{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のfuncion作品のどれも:周り https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html
私の現在の仕事は、挿入前{}
にNULLに設定することですが、それは愚かです。単純な更新では、2つのクエリを使用するべきではありません。
どうやってこれを処理しますか?
チェック...? https://dev.mysql.com/doc/refman/5.7/en/json-creation-functions.html – CBroe
試してみてください: 'UPDATE \' testjson \ 'SET \' extra \ '= IF(\' extra \ 'IS NULL、JSON_OBJECT( 'age'、87)、JSON_INSERT(\ 'extra \'、 '$ .age'、87)); '。 – wchiquito