TOP

SQL-पाठ 5. वाइल्डकार्ड और नियमित अभिव्यक्ति (LIKE)

अक्सर, डेटा को फ़िल्टर करने के लिए, हमें स्थिति के सटीक मिलान के आधार पर नहीं, बल्कि अनुमानित मूल्य के आधार पर नमूना लेने की आवश्यकता होगी। उदाहरण के लिए, जब हम किसी ऐसे उत्पाद की खोज करते हैं जिसका नाम एक निश्चित पैटर्न (नियमित अभिव्यक्ति) से मेल खाता है या जिसमें कुछ प्रतीक या शब्द शामिल हैं। ऐसे उद्देश्यों के लिए, SQL में एक ऑपरेटर LIKE है, जो अनुमानित मानों की तलाश करता है। इस तरह के पैटर्न का निर्माण करने के लिए, मेटाकैरेक्टर (मूल्य के भाग को खोजने के लिए विशेष वर्ण) का उपयोग किया जाता है, अर्थात्: "प्रतिशत चिह्न" (%) या तारांकन चिह्न (*), "अंडरस्कोर" (_) या "प्रश्न चिह्न" (?) , "वर्ग कोष्ठक" ([ ]).


1. मेटाकैरेक्टर प्रतिशत चिह्न (%) या तारांकन चिह्न (*)

आइए, उदाहरण के लिए, अपनी तालिका से उन रिकॉर्ड्स का चयन करें जो केवल उन उत्पादों से संबंधित हैं जिनके नाम में स्की शब्द शामिल है। ऐसा करने के लिए, हम एक उपयुक्त टेम्पलेट बनाएंगे:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product LIKE '*Skis*'

जैसा कि आप देख सकते हैं, डीबीएमएस ने केवल उन रिकॉर्ड्स का चयन किया जहां उत्पाद कॉलम में स्की शब्द वाले उत्पाद शामिल थे।

यह उदाहरण तारांकन चिह्न (*) मेटाकैरेक्टर का उपयोग करता है क्योंकि MS Access LIKE ऑपरेटर के लिए "प्रतिशत चिह्न" (%) का समर्थन नहीं करता है।

2. मेटाकैरेक्टर अंडरस्कोर (_) या प्रश्न चिह्न (?)

किसी शब्द में एकल वर्ण को बदलने के लिए अंडरस्कोर या प्रश्न चिह्न का उपयोग किया जाता है। आइए बाइक शब्द के सभी स्वरों को "प्रश्न चिह्न" (?) से बदलें और परिणाम देखें:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product LIKE 'B?k?s'
हमने "प्रश्न चिह्न" (?) मेटाकैरेक्टर का उपयोग किया क्योंकि MS Access LIKE ऑपरेटर के लिए "अंडरस्कोर" (_) का समर्थन नहीं करता है।

3. मेटाकैरेक्टर वर्गाकार कोष्ठक ([ ])

वर्गाकार ब्रैकेट मेटाकैरेक्टर ([ ]) का उपयोग खोज के लिए वर्णों के एक सेट को एक साथ निर्दिष्ट करने के लिए किया जाता है।

SELECT * 
FROM Sumproduct 
WHERE City LIKE '[TN]*'

उपरोक्त उदाहरण में, हमने ऐसे रिकॉर्ड चुने हैं जहां शहर के नाम City फ़ील्ड में T या N अक्षर से शुरू होते हैं।

वर्गाकार ब्रैकेट मेटाकैरेक्टर ([ ]) MySQL बोली में समर्थित नहीं है।

साथ ही, इस मामले में, हम एक अन्य मेटाकैरेक्टर का उपयोग कर सकते हैं जो विपरीत कार्य करता है। आइए हमारी नियमित अभिव्यक्ति में एक विस्मयादिबोधक चिह्न (!) जोड़ें, जिसका अर्थ होगा "बराबर नहीं" (MS Access के लिए) या एक पावर चिह्न (^) (अन्य DBMS के लिए)।

SELECT * 
FROM Sumproduct 
WHERE City LIKE '[!TN]*'

अर्थात्, हमारे द्वारा बनाई गई अंतिम क्वेरी को इस प्रकार पढ़ा जाएगा: समप्रोडक्ट तालिका से सभी कॉलम चुनें, और केवल उन रिकॉर्ड्स का चयन करें जहां City फ़ील्ड में शहरों के नाम T या N अक्षर से शुरू नहीं होते हैं। इसके अतिरिक्त, हम ध्यान दें कि "वर्ग कोष्ठक" मेटाकैरेक्टर में अक्षरों का सेट पाठ में केवल एक स्थिति से मेल खाता है।

यदि हम पहले से ज्ञात NOT ऑपरेटर का उपयोग करते हैं तो हम एक समान परिणाम प्राप्त कर सकते हैं, लेकिन विस्मयादिबोधक बिंदु (!) के साथ रिकॉर्ड छोटा हो जाएगा।