2016-12-20 8 views
1

null可能なJSON MySQL 5.7フィールドがあります。JSON_SETがMySQLのヌルJSONフィールドを更新していません

例クエリ:フィールドのデータがすでにNULLの場合、それは

UPDATE `json_test` SET `data` = JSON_SET(`data`, '$.a', 1)

更新されません。

{ "a" : 2 }の場合は、正しく1に更新されます。まだ設定されていない場合は、JSON_SETの設定が必要です。

何が起こっているのですか?

答えて

2

それはそれ以外の場合は、ドキュメント内の存在しないパスのパス/値ペアが 無視しても効果はありませんされてヌル

not supposed to作品です。

今mysqlのは、あなたが更新されているのと同じテーブルでサブクエリを使用することはできませんが、あなたはおそらくSTIL CASE/WHENを使用して登録しようが、私は怠け者だので、私はあなたを残しUPDATEでこれを解決できます2つのクエリソリューション。

UPDATE `json_test` SET `data` = JSON_SET(`data`, '$.a', 1) WHERE data IS NOT NULL; 

UPDATE `json_test` SET `data` = JSON_OBJECT('$.a', 1) WHERE data IS NULL; 
+0

これは素晴らしいです。あなたが持っている唯一のバグはJSON_OBJECTです。単に 'a'、1を設定すると、キーを設定しているときに$ .aを使ってアクセスしません。 – Jonathan

+0

oopsはい。指摘してくれてありがとう – e4c5

関連する問題