搜尋

首頁  >  問答  >  主體

將標題重寫為:將MySQL中的JSON陣列連接為字串

我正在尋找一種在MySQL中將JSON數組連接為分隔字串的方法。

下面是一個範例,使用巢狀的REPLACE()函數來取代字串中的字元。

SELECT REPLACE(REPLACE(REPLACE(JSON_KEYS('{
  "foo": "I am foo",
  "bar": "I am bar",
  "baz": "I am baz"
}'), '["', ''), '", "', '|'), '"]', '') AS value;

回傳結果...

bar|baz|foo

有沒有一種原生的方法來做到這一點,而不需要像這樣做一些hacky的事情?

P粉935883292P粉935883292464 天前714

全部回覆(1)我來回復

  • 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 的工作方式與您預期的一樣,但是垂直方向。

    編輯:也可以參考這個類似問題

    回覆
    0
  • 取消回覆