2009-07-09 12 views
19

sqlite3 का उपयोग भीतर बाध्यकारी अगर मेरी क्वेरीSQLite, स्ट्रिंग शाब्दिक

SELECT * FROM table WHERE title LIKE '%x%'

यह तार कि x शामिल की भरपाई कर देंगे है।

SELECT * FROM table WHERE title LIKE '%x?%'

हालांकि, इस '' प्रपत्र एक स्ट्रिंग शाब्दिक के बाद से काम नहीं करता है: मैं x एक bindable पैरामीटर बनाना चाहते हैं, जैसे। क्या शाब्दिक के भीतर ? से बचने का कोई तरीका है? मैं समझता हूँ कि मैं % को रोकने के लिए bindable पैरामीटर बना सकते हैं और उसके बाद

SELECT * FROM table WHERE title LIKE ?

का उपयोग लेकिन इस बाँध इंटरफेस एसक्यूएल इंजेक्शन के बजाय निपटने के मामले में मेरी कोड में जिम्मेदारी ले जाता है। क्या इसके लिए कोई अच्छा समाधान है?

उत्तर

34
SELECT * FROM table WHERE title LIKE '%' || ? || '%'; 
+5

यह सिर्फ स्क्लाइट नहीं है; '|| एसक्यूएल मानक में है; पोस्टग्रेस और ओरेकल इसका पालन करें। MySQL और MSSQL क्रमशः 'CONCAT()' और '+' का उपयोग करते हैं, दोनों गैर-मानक हैं। – ephemient

संबंधित मुद्दे