আমি জেসন অ্যারের অভ্যন্তরে নির্দিষ্ট তারিখ রয়েছে এমন কোনও সারি রয়েছে কিনা তা জানার চেষ্টা করছি
আসুন বলি যে আমার ডেটা দেখতে এমন দেখাচ্ছে:
সারণী অ্যাপ্লিকেশন:
id | application_id | data
# Rows
1 | 1 | [{"data" : ["some", "data#1"], "date": "2016-04-21"}, {"data" : ["other", "data#1"], "date" : "2016-04-22"}]
2 | 2 | [{"data" : ["some", "data#2"], "date": "2016-04-21"}, {"data" : ["other", "data#2"], "date" : "2016-04-26"}]
3 | 1 | [{"data" : ["some", "data#3"], "date": "2016-04-22"}, {"data" : ["other", "data#3"], "date" : "2016-04-26"}]
4 | 3 | [{"data" : ["some", "data#4"], "date": "2016-04-26"}]
যাদের ডেটাতে তারিখ রয়েছে সে সব অ্যাপ্লিকেশন আমি কীভাবে খুঁজে পাব '2016-04-26'
?
সুতরাং মূলত আমি এটি করতে পারি:
select id, json_extract(`data`, "$[*].date") from applications
যা ফেরত:
1 | ["2016-04-21", "2016-04-22"]
2 | ["2016-04-21", "2016-04-26"]
3 | ["2016-04-22", "2016-04-26"]
4 | ["2016-04-26"]
তবে যদি json_extract
এই WHERE
ধারাটিতে ব্যবহার করার চেষ্টা করা হয় তবে আমি কেবল তখনই এটি ব্যবহার করতে পারি যদি আমি স্পষ্টভাবে json_extract
রাস্তার যুক্তিতে অ্যারের কীটি বলি , যেমন:
select * from applications where json_extract(`data`, "$[0].date") = "2016-04-26"
যা সঠিকভাবে আইডি 4 সহ সারিটি প্রদান করে।
তবে আমি যদি পথে কোনও ওয়াইল্ডকার্ড ব্যবহার করার চেষ্টা করি তবে এটি আর কাজ করে না:
select * from applications where json_extract(`data`, "$[*].date") = "2016-04-26"
এটি 2, 3, 4 সারিগুলি ফিরিয়ে আনবে।
আমি অন্যান্য অনেকগুলি বিকল্প / বৈকল্পিক চেষ্টা করেছি কিন্তু কোয়েরিটি সঠিকভাবে গঠন করার উপায় খুঁজে পাচ্ছি না।
মাইএসকিউএল জেএসএনের বর্তমান বাস্তবায়নের মাধ্যমে কি এরকম কিছু সম্ভব?
data
, " j [0]। তারিখ") অ্যাপ্লিকেশন থেকে 'তারিখ' হিসাবে বেছে নিন, আইডি নির্বাচন করুন, json_extract (data
, "$ [1]। তারিখ") অ্যাপ্লিকেশন থেকে 'তারিখ' হিসাবে বেছে নিন এবং সমস্ত ফিল্টার প্রয়োগ করুন এবং আইডি তালিকা রয়েছে