Heim  >  Fragen und Antworten  >  Hauptteil

Schreiben Sie den Titel wie folgt um: Verketten Sie das JSON-Array mit einem String in MySQL

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?

P粉935883292P粉935883292410 Tage vor664

Antworte allen(1)Ich werde antworten

  • P粉952365143

    P粉9523651432023-09-07 12:10:40

    您正在要求使用键而不是值进行JSON到CSV转换。真正的“问题”是使用键,但可以以更简洁的方式实现。我不认为这种方式比较简洁,但您可能会觉得更优雅。为了确保额外的确定:不,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 是一个强大的工具,但需要阅读和大量的交流才能理解。我自己还在交流阶段。GROUP_CONCAT 的工作方式与您预期的一样,但是垂直方向。

    编辑:还可以参考这个类似问题

    Antwort
    0
  • StornierenAntwort