MySQL
JSON प्रकार से मान निकालें
खोज…
परिचय
MySQL 5.7.8+ देशी JSON प्रकार का समर्थन करता है। जब आपके पास json ऑब्जेक्ट्स बनाने के लिए अलग-अलग तरीके हैं, तो आप सदस्यों को विभिन्न तरीकों से एक्सेस और पढ़ सकते हैं, भी।
मुख्य कार्य JSON_EXTRACT
, इसलिए ->
और ->>
ऑपरेटर अधिक अनुकूल हैं।
वाक्य - विन्यास
- JSON_EXTRACT (json_doc, पथ [...])
- JSON_EXTRACT (json_doc, पथ)
- JSON_EXTRACT (json_doc, path1, Path2)
पैरामीटर
पैरामीटर | विवरण |
---|---|
json_doc | वैध JSON दस्तावेज़ |
पथ | सदस्य पथ |
टिप्पणियों
MySQL 5.7 संदर्भ मैनुअल में उल्लेख किया गया
- पथ तर्क द्वारा एकाधिक मिलान किए गए मान
यदि यह संभव है कि वे तर्क कई मानों को वापस कर सकते हैं, तो मिलान किए गए मान एक सरणी के रूप में स्वतः उत्पन्न होते हैं, उसी क्रम में जो उन्हें उत्पन्न करता है। अन्यथा, वापसी मान एकल मिलान किया गया मान है।
-
NULL
परिणाम जब:- कोई भी तर्क पूर्ण है
- पथ मिलान नहीं हुआ
यदि कोई तर्क पूर्ण है या कोई पथ दस्तावेज़ में कोई मान ढूँढता है, तो NULL लौटाता है।
JSON सरणी मान पढ़ें
JSON प्रकार के रूप में @myjson चर बनाएं (और पढ़ें ):
SET @myjson = CAST('["A","B",{"id":1,"label":"C"}]' as JSON) ;
कुछ सदस्यों का SELECT
!
SELECT
JSON_EXTRACT( @myjson , '$[1]' ) ,
JSON_EXTRACT( @myjson , '$[*].label') ,
JSON_EXTRACT( @myjson , '$[1].*' ) ,
JSON_EXTRACT( @myjson , '$[2].*')
;
-- result values:
'\"B\"', '[\"C\"]', NULL, '[1, \"C\"]'
-- visually:
"B", ["C"], NULL, [1, "C"]
JSON एक्सट्रैक्ट ऑपरेटर्स
path
निकालें ->
या ->>
ऑपरेटर्स, जबकि ->>
UNQUOTED मान है:
SELECT
myjson_col->>'$[1]' , myjson_col->'$[1]' ,
myjson_col->>'$[*].label' ,
myjson_col->>'$[1].*' ,
myjson_col->>'$[2].*'
FROM tablename ;
-- visuall:
B, "B" , ["C"], NULL, [1, "C"]
--^^^ ^^^
तो col->>path
JSON_UNQUOTE(JSON_EXTRACT(col,path))
बराबर है:
जैसा कि ->, - - >> ऑपरेटर हमेशा EXPLAIN के आउटपुट में विस्तारित होता है, जैसा कि निम्न उदाहरण प्रदर्शित करता है:
mysql> EXPLAIN SELECT c->>'$.name' AS name -> FROM jemp WHERE g > 2\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: jemp partitions: NULL type: range possible_keys: i key: i key_len: 5 ref: NULL rows: 2 filtered: 100.00 Extra: Using where 1 row in set, 1 warning (0.00 sec) mysql> SHOW WARNINGS\G *************************** 1. row *************************** Level: Note Code: 1003 Message: /* select#1 */ select json_unquote(json_extract(`jtest`.`jemp`.`c`,'$.name')) AS `name` from `jtest`.`jemp` where (`jtest`.`jemp`.`g` > 2) 1 row in set (0.00 sec)
इनलाइन पथ निकालने (+) के बारे में पढ़ें