Ich suche nach einer M?glichkeit, JSON-Arrays in MySQL zu durch Trennzeichen getrennten Zeichenfolgen zu verketten.
Hier ist ein Beispiel für die Verwendung verschachtelter REPLACE()
-Funktionen zum Ersetzen von Zeichen in einer Zeichenfolge.
SELECT REPLACE(REPLACE(REPLACE(JSON_KEYS('{ "foo": "I am foo", "bar": "I am bar", "baz": "I am baz" }'), '["', ''), '", "', '|'), '"]', '') AS value;
Ergebnisse zurückgeben...
bar|baz|foo
Gibt es eine native M?glichkeit, dies zu tun, ohne solche Hacks machen zu müssen?
您正在要求使用鍵而不是值進(jìn)行JSON到CSV轉(zhuǎn)換。真正的“問題”是使用鍵,但可以以更簡潔的方式實現(xiàn)。我不認(rèn)為這種方式比較簡潔,但您可能會覺得更優(yōu)雅。為了確保額外的確定:不,MySQL中沒有任何原生的方法可以滿足您的需求。
SELECT GROUP_CONCAT(json_source.a_key SEPARATOR '|') FROM JSON_TABLE( JSON_KEYS('{ "foo": "I am foo", "bar": "I am bar", "baz": "I am baz" }'), "$[*]" COLUMNS(a_key TEXT PATH '$') ) AS json_source;
JSON_TABLE
是一個強(qiáng)大的工具,但需要閱讀和大量的交流才能理解。我自己還在交流階段。GROUP_CONCAT
的工作方式與您預(yù)期的一樣,但是垂直方向。
編輯:還可以參考這個類似問題。