आजकल JSON सरणी का उपयोग करना एक स्पष्ट जवाब होगा।
चूंकि यह एक पुराना लेकिन अभी भी प्रासंगिक प्रश्न है, इसलिए मैंने एक छोटा उदाहरण प्रस्तुत किया। JSON फ़ंक्शन mySQL 5.7.x / MariaDB 10.2.3 के बाद से उपलब्ध हैं
मैं ईएलटी () पर इस समाधान को पसंद करता हूं क्योंकि यह वास्तव में एक सरणी की तरह है और कोड में इस 'सरणी' का पुन: उपयोग किया जा सकता है।
लेकिन सावधान रहें: यह (JSON) निश्चित रूप से एक अस्थायी तालिका का उपयोग करने की तुलना में बहुत धीमा है। इसका और अधिक काम है। imo।
यहाँ एक JSON सरणी का उपयोग कैसे किया जाता है:
SET @myjson = '["gmail.com","mail.ru","arcor.de","gmx.de","t-online.de",
"web.de","googlemail.com","freenet.de","yahoo.de","gmx.net",
"me.com","bluewin.ch","hotmail.com","hotmail.de","live.de",
"icloud.com","hotmail.co.uk","yahoo.co.jp","yandex.ru"]';
SELECT JSON_LENGTH(@myjson);
SELECT JSON_VALUE(@myjson, '$[0]');
और यहाँ एक छोटा सा उदाहरण दिखाया गया है कि यह कैसे कार्य / प्रक्रिया में काम करता है:
DELIMITER //
CREATE OR REPLACE FUNCTION example() RETURNS varchar(1000) DETERMINISTIC
BEGIN
DECLARE _result varchar(1000) DEFAULT '';
DECLARE _counter INT DEFAULT 0;
DECLARE _value varchar(50);
SET @myjson = '["gmail.com","mail.ru","arcor.de","gmx.de","t-online.de",
"web.de","googlemail.com","freenet.de","yahoo.de","gmx.net",
"me.com","bluewin.ch","hotmail.com","hotmail.de","live.de",
"icloud.com","hotmail.co.uk","yahoo.co.jp","yandex.ru"]';
WHILE _counter < JSON_LENGTH(@myjson) DO
SET _result = CONCAT(_result, _counter, '-', JSON_VALUE(@myjson, CONCAT('$[',_counter,']')), '#');
SET _counter = _counter + 1;
END WHILE;
RETURN _result;
END //
DELIMITER ;
SELECT example();
ELT
।