Rumah > Soal Jawab > teks badan
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粉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.