मेरे पास एक प्रश्न है और शायद यह सरल है (आपके लिए गुरु)।गतिशील MySQL जहां संग्रहित प्रक्रिया में क्लॉज
मैं अपनी एसक्यूएल पेजिंग कक्षा को सी # से एक MySQL संग्रहीत प्रक्रिया में स्थानांतरित कर रहा हूं। मेरे सी # घर से बने ऑब्जेक्ट में, क्वेरी गतिशील रूप से एक मानदंड के आधार पर बनाई गई है। उदाहरण:
if(keywords is not null)
{
whereClause += "WHERE description LIKE '%keywords%'"
}
if(price is not null)
{
whereClause += "AND price = '%price%'"
}
....
string query = "SELECT col1, col2 FROM tblThreads " + whereClause
अब, मेरे सवाल है: मैं कैसे MySQL में एक गतिशील जहां खंड इस के समान क्या करते हो? या, अगर वे उन मानकों के लिए कुछ भी दर्ज नहीं करते हैं, तो मैं उनको छोड़ने के लिए संग्रहीत प्रक्रिया में MySQL कैसे बताऊंगा? आईई:
SELECT col1, col2 FROM tblThreads
क्या यह पैरामीटर शून्य होगा यदि यह पैरामीटर शून्य था?
SELECT col1, col2 FROM tblThreads WHERE (IS NULL @keywords OR description like '%@keywords%'
??
धन्यवाद दोस्तों।
मैं इस एक पसंद है। मैं इसे स्वयं उपयोग करता हूं, क्योंकि जब मुझे SQL कथन का "भारी" पार्सिंग करना होता है, यानी प्रोग्रामेटिक रूप से निकालना और खंड। आपको 'पिछले पर वापस जाएं' और ", और उस पंक्ति को हटा दें, इत्यादि। WHERE क्लॉज को डिस्काउंट करना इतना आसान बनाता है। –
मैंने इसे एक बार पहले देखा था, और भले ही यह मेरे मूल प्रश्न का उत्तर नहीं देता है, यह दिलचस्प है। मान लीजिए कि मैं अपने सी # ऑब्जेक्ट क्लास पर चिपक गया हूं, अभी मैं यह पहचानने की कोशिश कर रहा हूं कि मैं "एंड" का उपयोग कर रहा हूं (मेरे पास एक बुलियन वैरिएबल है जो कि मैं जिस पल का उपयोग करता हूं, उस पर सही है।) मान लीजिए कि मैं ऐसा करता हूं, मैं चाहता हूं जब मैंने अपना पहला पैरामीटर इस्तेमाल किया, तो सही ट्रैक करना होगा? क्या इसमें कोई प्रदर्शन जुर्माना है और क्या 1 = 1 किसी भी मुद्दे का कारण बनता है? –
बस कुछ अतिरिक्त विवरण यहां देखे गए: http://stackoverflow.com/questions/8149142/where-1-1-statement मुझे वास्तव में यह विचार पसंद है और इसे लागू करने का प्रयास करेंगे। पारितोषिक के लिए धन्यवाद! अगर मैं उस एवेन्यू को आगे बढ़ाने का फैसला करता हूं तो मैं इस विधि का उपयोग करके अंततः अपनी संग्रहीत प्रक्रिया का निर्माण भी कर सकता हूं। धन्यवाद दोस्तों। –