আমি স্রেফ এর জন্য একটি পোস্টগ্রিজ এসকিউএল-নির্দিষ্ট বিকল্প তৈরি করেছি। এটি কিছুটা হ্যাক, এবং এটি নিজস্ব উপকারিতা এবং মতামত এবং সীমাবদ্ধতার সাথে আসে তবে এটি কাজ করে বলে মনে হয় এবং এটি কোনও নির্দিষ্ট বিকাশ ভাষা, প্ল্যাটফর্ম বা পিজি ড্রাইভারের মধ্যে সীমাবদ্ধ নয়।
অবশ্যই কৌশলটি হ'ল একক পরামিতি হিসাবে মানগুলির একটি স্বেচ্ছাসেবী দৈর্ঘ্যের সংগ্রহটি পাস করার একটি উপায় খুঁজে বের করা এবং ডিবিকে একাধিক মান হিসাবে স্বীকৃতি দেওয়া। আমার যে সমাধানটি কাজ করছে তা হ'ল সংগ্রহের মানগুলি থেকে একটি সীমিত স্ট্রিং তৈরি করা, সেই স্ট্রিংটিকে একক প্যারামিটার হিসাবে পাস করা এবং স্ট্রিং_টো_আর্রে () পোস্টগ্রিএসকিউএলএর সঠিকভাবে ব্যবহারের জন্য প্রয়োজনীয় কাস্টিংয়ের সাথে ব্যবহার করা।
সুতরাং আপনি যদি "foo", "blah" এবং "abc" অনুসন্ধান করতে চান, আপনি তাদের একত্রে একক স্ট্রিংয়ের সাথে যুক্ত করতে পারেন: 'foo, bla, abc'। এখানে সরাসরি এসকিউএল:
select column from table
where search_column = any (string_to_array('foo,blah,abc', ',')::text[]);
আপনার ফলস্বরূপ মান অ্যারে - ইন্টি, পাঠ্য, ইউউইড ইত্যাদি যা আপনি চান তা আপনি স্পষ্টতই নিক্ষেপ বদলে ফেলবেন এবং কারণ ফাংশনটি একটি একক স্ট্রিংয়ের মান নিচ্ছে (বা দুটি আমি মনে করি আপনি যদি ডিলিমিটারটি কাস্টমাইজ করতে চান তবে পাশাপাশি), আপনি একটি প্রস্তুত বিবৃতিতে এটি প্যারামিটার হিসাবে পাস করতে পারেন:
select column from table
where search_column = any (string_to_array($1, ',')::text[]);
লাইক তুলনা যেমন জিনিস সমর্থন করতে এটি যথেষ্ট নমনীয়:
select column from table
where search_column like any (string_to_array('foo%,blah%,abc%', ',')::text[]);
আবার কোনও প্রশ্ন নেই এটি হ্যাক, তবে এটি কাজ করে এবং আপনার সাথে থাকা সুরক্ষা এবং (সম্ভবত) পারফরম্যান্স সুবিধা সহ * আহেম * বিচ্ছিন্ন পরামিতি গ্রহণকারী প্রাক-সংকলিত প্রস্তুত বিবৃতি ব্যবহার করার অনুমতি দেয় । এটি কি পরামর্শদাতা এবং আসলে পারফরম্যান্ট? স্বাভাবিকভাবেই, এটি নির্ভর করে যেহেতু আপনার স্ট্রিংকে পার্সিং এবং সম্ভবত আপনার ক্যোয়ারী চালানোর আগে সম্ভবত কাস্টিং চলছে। আপনি যদি তিন, পাঁচ, কয়েক ডজন মান প্রেরণের প্রত্যাশা করেন তবে অবশ্যই তা ঠিক আছে। কয়েক হাজার? হ্যাঁ, সম্ভবত এত কিছু না। ওয়াইএমএমভি, সীমাবদ্ধতা এবং ব্যতিক্রমগুলি প্রযোজ্য, কোনও ওয়ারেন্টি এক্সপ্রেস বা অন্তর্নিহিত।
কিন্তু এটি কাজ করে.