मैं एक फिल्टर वस्तु है कई कॉलम युक्त तालिका क्वेरी करने के लिए, और बजाय एक शर्त है इस तरह सभी स्तंभों (वैकल्पिक छानने के लिए अनुमति) को कवर लिखें:Postgres का उपयोग कर स्तंभ नाम क्वेरी करने के लिए कैसे गतिशील/NpgSQL
WHERE ((:value0 IS NULL) OR (column_name0 = :value0)) AND ((:value1 IS NULL) OR (column_name1 = :value1)) AND... etc
प्रत्येक कॉलम के लिए
।
WHERE :column_name0 = :value0 AND column_name1 = :value1 AND... etc
जो संभव (इस जवाब given here के समान) नहीं है के रूप में कॉलम पार्स समय की आवश्यकता है: इसके बजाय, मैं आदर्श रूप में मैं एक पैरामीटर के रूप में क्षेत्र के नाम पर पारित करने में सक्षम होना चाहते हैं चाहते हैं ।
आप इसे कैसे दूर करते हैं? - जब मैं नए कॉलम जोड़े या हटाए जाते हैं तो मुझे वास्तव में एसक्यूएल को बनाए रखना नहीं है (जैसा कि आपको मेरे पहले उदाहरण में होना होगा) और मुझे लगता है कि कॉलम नामों को कमांड स्ट्रिंग में बनाना मेरे लिए खतरनाक होगा सीधे क्योंकि यह एसक्यूएल इंजेक्शन के लिए अनुमति दे सकता है।
ध्यान दें कि यह कोड एक वेब सेवा के पीछे है।
क्यों आप अक्सर कॉलम जोड़ने या निकालने की जरूरत है? ऐसी आवश्यकता के लिए क्या अच्छा कारण है? –
@ypercube, मुझे अक्सर ऐसा करने की आवश्यकता नहीं है। मैं अपने डेटाबेस में प्रत्येक बदलाव के लिए अपने फ़िल्टर ऑब्जेक्ट में एसक्यूएल को बनाए रखना नहीं चाहता था और साथ ही डेटा फ़िल्टर करने के लिए एक लचीली वस्तु प्रदान करता था। वैध कॉलम नाम प्राप्त करने के बारे में विचार के लिए –