"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > MySQL को समान क्वेरीज़ में बैकस्लैश से बचने के लिए डबल बैकस्लैश की आवश्यकता क्यों है, लेकिन बराबर (=) क्वेरीज़ में नहीं?

MySQL को समान क्वेरीज़ में बैकस्लैश से बचने के लिए डबल बैकस्लैश की आवश्यकता क्यों है, लेकिन बराबर (=) क्वेरीज़ में नहीं?

2024-11-01 को प्रकाशित
ब्राउज़ करें:182

Why Does MySQL Require Double Backslashes to Escape a Backslash in LIKE Queries But Not in Equals (=) Queries?

MySQL के स्लैश को समझना () क्वेरीज़ में बचना

MySQL में बैकस्लैश () सहित विशेष वर्णों से बचना एक आम बात है। व्याख्या संबंधी विवादों को रोकने के लिए प्रश्नों में। हालाँकि, बैकस्लैश के संबंध में समान ऑपरेटर (=) और LIKE ऑपरेटर के व्यवहार की तुलना करने पर एक विचित्र विसंगति उत्पन्न होती है।

समान ऑपरेटर (=)

बराबर ऑपरेटर के मामले में, खोज शब्द के भीतर बैकस्लैश से बचने के लिए किसी अतिरिक्त बैकस्लैश की आवश्यकता नहीं है। उदाहरण के लिए, निम्न क्वेरी उस पंक्ति को पुनर्प्राप्त करती है जहां शीर्षक कॉलम में मान "परीक्षण\" होता है।

SELECT * FROM `titles` WHERE title = 'test\';

MySQL पार्सर स्वचालित रूप से खोज शब्द में बैकस्लैश को एक शाब्दिक चरित्र के रूप में व्याख्या करता है, इसलिए सफल पुनर्प्राप्ति होती है।

LIKE ऑपरेटर

बराबर ऑपरेटर के विपरीत, LIKE ऑपरेटर को एक की आवश्यकता होती है खोज शब्द में बैकस्लैश से बचने के लिए अतिरिक्त बैकस्लैश। ऐसा इसलिए है क्योंकि LIKE ऑपरेटर एक पैटर्न मैच करता है, और बैकस्लैश SQL में डिफ़ॉल्ट रूप से एस्केप कैरेक्टर के रूप में कार्य करता है। इस प्रकार, निम्नलिखित क्वेरी पिछली पंक्ति के समान पंक्ति को पुनः प्राप्त करती है:

SELECT * FROM `titles` WHERE title LIKE 'test\\\\';

इस क्वेरी में, डबल बैकस्लैश सुनिश्चित करें कि खोज शब्द में एकल बैकस्लैश को शाब्दिक रूप से बैकस्लैश वर्ण के रूप में व्याख्या किया गया है। . पार्सर प्रारंभ में खोज शब्द से बैकस्लैश को हटा देता है। हालाँकि, जब पैटर्न मिलान बाद में किया जाता है, तो बैकस्लैश एक बार फिर हटा दिए जाते हैं। यह पैटर्न के विरुद्ध मिलान करने के लिए एक एकल बैकस्लैश छोड़ता है। यह सुनिश्चित करने के लिए कि बैकस्लैश को एक शाब्दिक चरित्र के रूप में माना जाता है, अतिरिक्त बैकस्लैश की आवश्यकता है।

एस्केप कैरेक्टर बदलना

MySQL आपको एक अलग एस्केप कैरेक्टर निर्दिष्ट करने की अनुमति देता है ESCAPE क्लॉज का उपयोग करके समान पैटर्न के लिए। उदाहरण के लिए, निम्नलिखित क्वेरी एस्केप कैरेक्टर के रूप में पाइप (|) कैरेक्टर का उपयोग करती है:

SELECT * FROM `titles` जहां title LIKE 'test\\' ESCAPE '|';

In इस उदाहरण में, खोज शब्द में एकल बैकस्लैश की शाब्दिक व्याख्या की गई है क्योंकि यह निर्दिष्ट एस्केप कैरेक्टर से पहले है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3