我有一个名为data的列,我必须将表中每条记录的内容从{}更新为[{}]A,我尝试使用JSON_ARRAY(),但它给了我一个带引号的
{}
[{}]
["{\"something\": \"true\"}"]
但我想吃点
[{ "something": "true" }]
我现在怎么办?
SELECT JSON_ARRAY(data) FROM A;
我应该如何使用JSON_SET()或UPDATE更新它?
JSON_SET()
UPDATE
w6lpcovy1#
您需要使用路径来获取JSON格式的数据,而不是引用列本身。路径$表示顶级对象。
$
update A SET data = CASE WHEN data IS NULL THEN '[]' -- NULL becomes empty array WHEN LEFT(data, 1) = '[' THEN data -- leave existing array alone ELSE JSON_ARRAY(data->"$") -- put object inside array END
DEMO
qkf9rpyu2#
SELECT JSON_ARRAY_AGG(JSON_OBJECT(data)) from A;
2条答案
按热度按时间w6lpcovy1#
您需要使用路径来获取JSON格式的数据,而不是引用列本身。路径
$
表示顶级对象。DEMO
qkf9rpyu2#
尝试使用