2015-05-23 7 views
14

मैं json_encoded के साथ एक डेटाबेस में अपने डेटा डालने कर रहा हूँ। अब मैं "सुविधा" में खोज करना चाहते हैं, लेकिन मैं नहीं कर सकता।mysql में JSON डेटा कैसे खोजें?

MySQL क्वेरी:

{"feature":{"1":{"value":"["2","3"]"}, 
      "2":{"value":["1"]}, 
      "5":{"value":""}, 
      "3":{"value":["1"]}, 
      "9":{"value":""}, 
      "4":{"value":"\u0633\u0627\u062a\u0646"}, 
      "6":{"value":""}, 
      "7":{"value":""}, 
      "8":{"value":""} 
      }, 
"show_counter":"0", 
"show_counter_discount":"" 
}} 
:

SELECT `id` , `attribs_json` 
FROM `products` 
WHERE `attribs_json` REGEXP '"1":{"value":[^"3"$]' 

इस क्वेरी मुझे कुंजी "1" और मूल्य वाली सभी पंक्तियों से पता चलता किसी भी बात नहीं मान है "3"

मेरे डेटा है

+0

मैं मुझे सभी रिकॉर्ड दिखाने के लिए कि कुंजी है "1" और चाहते हैं "3" मूल्यों में से एक है – reza

+0

के बारे में बताएं "नहीं कर सकते हैं"! आपको क्या उत्पादन मिलता है? – Ajoy

+0

मैं उन सभी उत्पादों को दिखाना चाहता हूं जो फीचर की आईडी 1 है और फीचर के मानों में से एक है 3 सुविधा इस तरह की सरणी है: सुविधा = सरणी ( 1 => सरणी (1,2,3), 2 => सरणी (1 , 4,7) ) मैं डेटाबेस को सहेजने के लिए jsonencode का उपयोग कर रहा हूं – reza

उत्तर

8
  1. डेटाबेस में JSON भंडारण पहले सामान्य रूप उल्लंघन करती है।

    सबसे अच्छी बात आप कर सकते हैं एक और तालिका में सामान्य और दुकान सुविधाओं के लिए है। फिर आप जुड़ने के साथ एक बेहतर दिखने और निष्पादित क्वेरी का उपयोग करने में सक्षम होंगे। आपका JSON भी तालिका जैसा दिखता है।

  2. Mysql 5.7 builtin है JSON कार्यक्षमता:
    http://mysqlserverteam.com/mysql-5-7-lab-release-json-functions-part-2-querying-json-data/

  3. सही पैटर्न है:

    WHERE `attribs_json` REGEXP '"1":{"value":[^}]*"3"[^}]*}' 
    

    [^}] छोड़कर }

3

मैं इस क्वेरी का उपयोग किसी भी चरित्र से मेल खाएगी

SELECT id FROM table_name WHERE field_name REGEXP '"key_name":"([^"])key_word([^"])"'; 
or 
SELECT id FROM table_name WHERE field_name RLIKE '"key_name":"[[:<:]]key_word[[:>:]]"'; 

पहली क्वेरी मैं आंशिक मूल्य खोजने के लिए इसका उपयोग करता हूं। दूसरी क्वेरी मैं सटीक शब्द खोजने के लिए इसका उपयोग करता हूं।

+0

MySQL 5.7 में अंततः JSON समर्थन है।हालांकि उस अद्यतन के लिए कुछ समय लगेगा, लेकिन एक त्वरित संदर्भ के रूप में यह कुछ जानकारी निकालने का एक आसान तरीका है। धन्यवाद! – timothymarois

+0

यह मेरे लिए काम नहीं कर रहा है। मेरे पास '{" छवियों "की संरचना है:" - "} 'और'' डेटा 'RLIKE' छवियों "से 'आईडी' चुनें," [[0: <:]]-[[:>:]] "';' कुछ भी वापस नहीं लौटा रहा है – Volatil3

19

आप mysql संस्करण> = 5.7 है, तो आप इस कोशिश कर सकते हैं -

SELECT JSON_EXTRACT(name, "$.id") as name 
FROM table 
WHERE JSON_EXTRACT(name, "$.id") > 3 

आउटपुट -

+-------------------------------+ 
| name       | 
+-------------------------------+ 
| {"id": "4", "name": "Betty"} | 
+-------------------------------+ 

अधिक जानकारी के https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html

5

हैं के लिए संदर्भ लिंक की जांच करें आप MySQL नवीनतम संस्करण का उपयोग कर रहे हैं, आपकी आवश्यकता तक पहुंचने में मदद कर सकते हैं।

select * from products where attribs_json->"$.feature.value[*]" in (1,3) 
+0

आप mysql के नवीनतम संस्करण के साथ मतलब है? किस संस्करण में यह समर्थित है? –

+0

आईएस ऑपरेटर किस संस्करण में समर्थित है? –

+0

MySQL 5.5 और इसके बाद के संस्करण @ सर्जियो –

संबंधित मुद्दे