No encuentro una manera de usar JSON_INSERT en un json cuya clave es una cadena:
{ "computer": { "display": blue }, "computer home":{} }De esta manera funciona:
JSON_INSERT(type, '$.computer.color', 'red');`Pero no así:
JSON_INSERT(type, '$.computer home.color', 'red');`Mi deseo:
{ "computer" :{ "display": "blue", "color": "red" }, "computer home":{ "color": "red" } }Aparentemente no funciona porque la clave json "computer home" tiene espacio, ¿cómo puedo insertarla incluso con espacios?
Aquí hay una demostración:
mysql> set @j = '{ "computer": { "display": "blue" }, "computer home":{} }';(Tenga en cuenta que también tuve que poner "azul" entre comillas dobles; todas las cadenas deben estar delimitadas de esa manera en JSON)
Puede usar claves JSON que contengan espacios (o también signos de puntuación) delimitándolos con comillas dobles:
mysql> select json_insert(@j, '$."computer home".color', 'red') as result; +----------------------------------------------------------------------+ | result | +----------------------------------------------------------------------+ | {"computer": {"display": "blue"}, "computer home": {"color": "red"}} | +----------------------------------------------------------------------+