नेक्रोमैंसिंग के लिए क्षमा करें, लेकिन मुझे इसी तरह की समस्या का सामना करना पड़ा है। समाधान है:JSON_TABLE()
MySQL 8.0 के बाद से उपलब्ध है।
सबसे पहले, पंक्तियों में सरणियों को एक-पंक्ति एकल सरणी में मर्ज करें।
select concat('[', -- start wrapping single array with opening bracket
replace(
replace(
group_concat(vals), -- group_concat arrays from rows
']', ''), -- remove their opening brackets
'[', ''), -- remove their closing brackets
']') as json -- finish wraping single array with closing bracket
from (
select '[801, 751, 603, 753, 803]' as vals
union select '[801, 751]'
union select '[578, 66, 15]'
) as jsons;
# gives: [801, 751, 603, 753, 803, 801, 751, 578, 66, 15]
दूसरा, json_table
का उपयोग करें सरणी को पंक्तियों में बदलने के लिए।
select val
from (
select concat('[',
replace(
replace(
group_concat(vals),
']', ''),
'[', ''),
']') as json
from (
select '[801, 751, 603, 753, 803]' as vals
union select '[801, 751]'
union select '[578, 66, 15]'
) as jsons
) as merged
join json_table(
merged.json,
'$[*]' columns (val int path '$')
) as jt
group by val;
# gives...
801
751
603
753
803
578
66
15
देखें https://dev. mysql.com/doc/refman/8.0/hi/json-table-functions.html#function_json-table
नोटिस group by val
विशिष्ट मूल्य प्राप्त करने के लिए। आप order
भी कर सकते हैं उन्हें और सब कुछ...
या आप group_concat(distinct val)
. का उपयोग कर सकते हैं group by
. के बिना निर्देश (!) एक-पंक्ति परिणाम प्राप्त करने के लिए।
या यहां तक कि cast(concat('[', group_concat(distinct val), ']') as json)
एक उचित json सरणी प्राप्त करने के लिए:[15, 66, 578, 603, 751, 753, 801, 803]
।
मेरे MySQL को JSON स्टोरेज के रूप में उपयोग करने के सर्वोत्तम अभ्यास पढ़ें
:)पी>