SQL Server 2016: Mengubah Tatasusunan Objek JSON kepada Tatasusunan Nilai
Keupayaan JSON SQL Server 2016 adalah mantap, tetapi mengekstrak struktur data tertentu kadangkala memerlukan pendekatan kreatif. Contoh ini menunjukkan mengubah tatasusunan objek JSON kepada tatasusunan nilai yang lebih ringkas.
Cabaran:
Pertimbangkan pertanyaan yang menjana tatasusunan objek JSON:
<code class="language-sql">SELECT (SELECT item_id FROM #temp FOR JSON PATH, root('ids')) </code>
Ini menghasilkan JSON seperti ini:
<code class="language-json">{ "ids": [ {"item_id": "1234"}, {"item_id": "5678"}, {"item_id": "7890"} ] }</code>
Matlamatnya adalah untuk menyusun semula ini menjadi tatasusunan JSON yang mengandungi hanya nilai item_id
:
<code class="language-json">{ "ids": [ "1234", "5678", "7890" ] }</code>
Penyelesaian:
Kuncinya ialah proses dua langkah yang memanfaatkan XML sebagai perantara:
<code class="language-sql">SELECT JSON_QUERY('[' + STUFF(( SELECT ',' + '"' + item_id + '"' FROM #temp FOR XML PATH('')),1,1,'') + ']' ) ids FOR JSON PATH, WITHOUT_ARRAY_WRAPPER </code>
Kod ini mula-mula menggunakan FOR XML PATH('')
untuk menggabungkan nilai item_id
, mengelilingi setiap satu dengan petikan berganda. STUFF
mengalih keluar koma di hadapan. Hasilnya kemudian dibalut dalam kurungan segi empat sama untuk mencipta tatasusunan JSON yang sah, yang JSON_QUERY
menghuraikan. Akhir sekali, FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
memformatkan output sebagai tatasusunan JSON yang mudah. Ini secara berkesan meratakan tatasusunan objek JSON asal ke dalam tatasusunan nilai yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Susunan Nilai daripada Susunan Objek JSON dalam SQL Server 2016?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!