Rumah  >  Soal Jawab  >  teks badan

Tulis semula tajuk sebagai: Gabungkan tatasusunan JSON ke rentetan dalam MySQL

Saya sedang mencari cara untuk menggabungkan tatasusunan JSON ke dalam rentetan terhad dalam MySQL.

Berikut ialah contoh menggunakan fungsi REPLACE() bersarang untuk menggantikan aksara dalam rentetan.

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

Kembalikan hasil...

bar|baz|foo

Adakah terdapat cara asli untuk melakukan ini tanpa perlu melakukan beberapa perkara yang meretas seperti ini?

P粉935883292P粉935883292410 hari yang lalu662

membalas semua(1)saya akan balas

  • P粉952365143

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

    Anda meminta penukaran JSON kepada CSV menggunakan kunci dan bukannya nilai. "Masalah" sebenar ialah menggunakan kekunci, tetapi ini boleh dicapai dengan cara yang lebih bersih. Saya tidak fikir cara ini lebih bersih, tetapi anda mungkin mendapati ia lebih elegan. Hanya untuk lebih pasti: Tidak, tidak ada cara asli dalam MySQL yang melakukan apa yang anda perlukan.

    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 berfungsi seperti yang anda jangkakan, tetapi secara menegak.

    Sunting: Anda juga boleh merujuk kepada Soalan serupa ini.

    balas
    0
  • Batalbalas