[英]MySQL 5.7 Concatenate values of JSON string into one string
我有一個表,其中content
列由 JSON object 組成,並帶有示例值:
{"blocks":[{"score":"A"},{"score":"A"},{"score":"B"}]}
我想要做的是SELECT
用於所有分數的字符串表示,所以對於這個例子,我想要:
AAB
我已經能夠輕松解析 JSON :
SELECT json_extract(content, '$.blocks[*].score') AS scores
結果是:
["A", "A", "B"]
但由於某種原因,我在將 JSON 數組連接成單個字符串時遇到問題(除了將其轉換為字符串並調用一些替換函數來刪除引號和括號)。 我嘗試了CONCAT
和GROUP_CONCAT
的變體,但沒有找到解決方案。
將此 JSON 字符串連接成單個字符串的正確方法是什么?
您可以使用目錄表(例如information_schema.tables
)來生成行以按數組的長度進行迭代,然后使用GROUP_CONCAT()
聚合所有成員,例如
SELECT GROUP_CONCAT(
JSON_UNQUOTE(
JSON_EXTRACT(content,
CONCAT('$.blocks[', i - 1, '].score'))
)
SEPARATOR '') AS scores
FROM (SELECT JSON_LENGTH(JSON_EXTRACT(content, '$.blocks[*].score')) AS len,
@i := @i + 1 AS i,
content
FROM tab
JOIN information_schema.tables
JOIN (SELECT @i := 0) AS i) AS t
WHERE i <= len;
+--------+
| scores |
+--------+
| AAB |
+--------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.