बयानएक तैयार स्थिति में (शायद) शून्य मानों से कैसे निपटें?
SELECT * FROM tableA WHERE x = ?
है और पैरामीटर java.sql.PreparedStatement 'stmt'
stmt.setString(1, y); // y may be null
तो y
रिक्त है के माध्यम से डाला जाता है, बयान हर मामले में कोई भी पंक्ति रिटर्न x = null
हमेशा होता है क्योंकि झूठा (x IS NULL
होना चाहिए)। एक समाधान
SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL)
होगा लेकिन फिर मैं एक ही पैरामीटर दो बार सेट करना होगा। क्या कोई बेहतर समाधान है?
धन्यवाद!
वक्तव्य 1:
SELECT * FROM tableA WHERE x is NULL
वक्तव्य 2:
SELECT * FROM tableA WHERE x = ?
आप अपने चर की जाँच करें और स्थिति के आधार पर उचित बयान का निर्माण कर सकते
मैं तैयार बयान का उपयोग नहीं करता हूं। मैं एसक्यूएल स्ट्रिंग का उपयोग करता हूं, और फिर मैं एसक्यूएल स्ट्रिंग में 'Is Null' के साथ' = NULL' को प्रतिस्थापित करता हूं। एक जादू की तरह काम करता है। –
यह इंजेक्शन हमलों के लिए सुरक्षित और संभावित रूप से कमजोर नहीं है। – aioobe