新しいmysqlサーバーのJSON関数を調査しています。しかし、非常に初歩的な問題に遭遇します。
現在の値が NULL かどうかわからない場合、JSON 列に {"key":"value"} を挿入するにはどうすればよいですか?
次の表は、説明のみを目的としています。
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 を設定することですが、それはばかげています。単純な更新では、2 つのクエリを使用しないでください。
皆さんはこれをどのように処理しますか?