प्रश्न:
SELECT * FROM table WHERE ? LIKE (col || '%');
(Postgres और MySQL) के रूप में फिर से लिखा जा सकता है:
SELECT * FROM table WHERE col = left(?, length(col));
जैसा कि टिप्पणी की गई है, पहले फॉर्म को भी काम करना चाहिए। हालांकि, यह मुश्किल हो सकता है, क्योंकि विशेष अर्थ वाले वर्ण के लिए LIKE
(कम से कम _%\
) कॉलम में बचना होगा। यदि आप चाहते हैं कि यह MySQL और Postgres दोनों के साथ काम करे, तो आपको दोनों कार्यान्वयनों में विशेष वर्णों का निरीक्षण करना होगा। तो दूसरा रूप है बहुत कम त्रुटि-प्रवण प्रिंसिपल पर।
प्रदर्शन
इनमें से कोई भी क्वेरी col
. पर किसी अनुक्रमणिका का उपयोग नहीं कर सकती है , दोनों sargable
नहीं हैं . दिए गए खोज पैटर्न ?
के सभी संभावित उपसर्गों को खोजने के रूप में समस्या का पुनर्मूल्यांकन किया जा सकता है , जिसे इसी तरह से अनुकूलित किया जा सकता है जैसे कि यह संबंधित उत्तर (पोस्टग्रेज के लिए) dba.SE पर: