mysql:16400
From: "yoku ts." <"yoku ts." <yoku0825@xxxxxxxxxx>>
Date: Fri, 14 Apr 2017 10:43:33 +0900
Subject: [mysql 16400] Re: [mysql 16399] Re: [mysql 16393] [告知] MySQL勉強会 in 大阪(第10回):4/11(火)
yoku0825といいます。
もともとの宿題がわからないのですが、JSON型にキャストすると上手くいくのではないでしょうか?
(微妙にカラム名とテーブル名が違うのはご容赦ください)
```
mysql57> SELECT json_insert(j,'$.authority.DC2',
CAST('{"DC2":{"rack":["A01"]}}' AS JSON)) FROM t;
+------------------------------------------------------------------------------+
| json_insert(j,'$.authority.DC2', CAST('{"DC2":{"rack":["A01"]}}' AS JSON)) |
+------------------------------------------------------------------------------+
| {"authority": {"DC1": {"rack": ["A01"]}, "DC2": {"DC2": {"rack": ["A01"]}}}} |
+------------------------------------------------------------------------------+
1 row in set (0.00 sec)
```
あってますかね?
yoku0825,
2017年4月14日 10:11 aoike <masahiro.aoike@xxxxxxxxxx>:
> 先日はありがとうございました、あおいけです。
>
> 宿題(?)だったJSON型の件です。
> jsonを扱う関数にjson文字列をjsonObjectとして使えないか…という問いに対して
> 「json_extract使えばいいんじゃない?」とのことだったので試してみました。
>
> JSON型のcolumn(authority)がupdate前には
> {"authority": {"DC1": {"rack": ["A01"]}}}
> となっている状態から
> {"authority": {"DC1": {"rack": ["A01"]},"DC2":{"rack":["A01"]}}}
> に変更したい({"DC2":{"rack":["A01"]}}をinsert)ので、json_unquoteにJson文字列を放り込んで
>
> update u_group set authority =
> json_insert(authority,'$.authority.DC2',json_unquote("{\"DC2\":{\"rack\":[\"A01\"]}}"));
>
> とすると
> {"authority": {"DC1": {"rack": ["A01"]},"DC2":
> "{\"DC2\":{\"rack\":[\"A01\"]}}"}}
>
> と文字列扱いされてしまい、NGでした。
>
>
16393 2017-04-05 18:30 ["YAMASAKI, Yoshiaki"] [告知] MySQL勉強会 in 大阪(第10回):4/11(火) 16399 2017-04-14 10:11 ┗[aoike <masahiro.aoik] Re: [mysql 16393] [告知] MySQL勉強会 in 大阪(第10回):4/11(火) -> 16400 2017-04-14 10:43 ┗["yoku ts." <yoku0825] Re: [mysql 16399] Re: [mysql 16393] [告知] MySQL勉強会 in 大阪(第10回):4/11(火) 16401 2017-04-14 11:19 ┗[aoike <masahiro.aoik] Re: [mysql 16400] Re: [mysql 16399] Re: [mysql 16393] [告知] MySQL勉強会 in 大阪(第10回):4/11(火)