SQL में, LIKE
ऑपरेटर आपको पैटर्न मिलान करने की अनुमति देता है। यह निर्धारित करता है कि एक विशिष्ट वर्ण स्ट्रिंग एक निर्दिष्ट पैटर्न से मेल खाती है या नहीं।
एक पैटर्न में नियमित वर्ण और वाइल्डकार्ड वर्ण शामिल हो सकते हैं।
स्रोत तालिका
इस पृष्ठ पर उदाहरणों के लिए निम्न तालिका का उपयोग किया गया है।
SELECT * FROM Owners;
परिणाम:
+-----------+-------------+------------+----------------+-------------------+ | OwnerId | FirstName | LastName | Phone | Email | |-----------+-------------+------------+----------------+-------------------| | 1 | Homer | Connery | (308) 555-0100 | [email protected] | | 2 | Bart | Pitt | (231) 465-3497 | [email protected] | | 3 | Nancy | Simpson | (489) 591-0408 | NULL | | 4 | Boris | Trump | (349) 611-8908 | NULL | | 5 | Woody | Eastwood | (308) 555-0112 | [email protected] | | 6 | Burt | Tyson | (309) 565-0112 | [email protected] | +-----------+-------------+------------+----------------+-------------------+
उदाहरण
यह दिखाने के लिए यहां एक उदाहरण दिया गया है कि कैसे LIKE
ऑपरेटर काम करता है।
SELECT
FirstName,
LastName,
Email
FROM Owners
WHERE Email LIKE '%.com';
परिणाम:
+-------------+------------+-------------------+ | FirstName | LastName | Email | |-------------+------------+-------------------| | Homer | Connery | [email protected] | | Bart | Pitt | [email protected] | | Woody | Eastwood | [email protected] | +-------------+------------+-------------------+
इस उदाहरण में, मैंने LIKE
. का उपयोग किया है %
. के साथ संचालिका वाइल्डकार्ड ऑपरेटर उन मालिकों को लौटाएगा जिनके ईमेल पते .com
. में समाप्त होते हैं ।
LIKE
अन्य स्ट्रिंग ऑपरेटरों के साथ भी इस्तेमाल किया जा सकता है, जैसे _
, []
, और [^]
।
%
वाइल्डकार्ड ऑपरेटर
%
वाइल्डकार्ड ऑपरेटर शून्य या अधिक वर्णों की किसी भी स्ट्रिंग से मेल खाता है। इसका उपयोग उपसर्ग या प्रत्यय के रूप में किया जा सकता है, और इसका उपयोग स्ट्रिंग के बीच में भी किया जा सकता है।
यह आमतौर पर प्रत्यय के रूप में अधिक उपयोग किया जाता है, और पैटर्न के बीच में इसका सीमित उपयोग होता है, हालांकि पैटर्न के बीच में इसका उपयोग करने के लिए कुछ वैध उपयोग-मामले हैं, जैसे कि निम्न:
SELECT
FirstName,
LastName,
Email
FROM Owners
WHERE Email LIKE '[email protected]%.com';
परिणाम:
+-------------+------------+------------------+ | FirstName | LastName | Email | |-------------+------------+------------------| | Bart | Pitt | [email protected] | +-------------+------------+------------------+
इस मामले में, हमें बार्ट का ईमेल पता नहीं पता था, लेकिन हमें पता था कि यह [email protected]
से शुरू हुआ था। और .com
. में समाप्त हुआ . इसलिए, हम LIKE
. का उपयोग करने में सक्षम थे %
. के संयोजन में बाकी को भरने के लिए वाइल्डकार्ड ऑपरेटर।
ध्यान रखें कि यह तकनीक डेटा के आधार पर और आप अपने SQL स्टेटमेंट को कैसे बनाते हैं, इसके आधार पर बहुत सारी अप्रासंगिक पंक्तियाँ लौटा सकती हैं।
द _
वाइल्डकार्ड ऑपरेटर
अंडरस्कोर (_
) वाइल्डकार्ड ऑपरेटर किसी एक वर्ण से मेल खाता है।
SELECT
FirstName,
LastName,
Email
FROM Owners
WHERE FirstName LIKE 'b_rt';
परिणाम:
+-------------+------------+------------------+ | FirstName | LastName | Email | |-------------+------------+------------------| | Bart | Pitt | [email protected] | | Burt | Tyson | [email protected] | +-------------+------------+------------------+
द []
वाइल्डकार्ड ऑपरेटर
कोष्ठक ([]
) वाइल्डकार्ड ऑपरेटर निर्दिष्ट सीमा या सेट के भीतर किसी एकल वर्ण से मेल खाता है जो कि कोष्ठक के बीच निर्दिष्ट है।
SELECT
FirstName,
LastName,
Email
FROM Owners
WHERE FirstName LIKE '[bh]%';
परिणाम:
+-------------+------------+-------------------+ | FirstName | LastName | Email | |-------------+------------+-------------------| | Homer | Connery | [email protected] | | Bart | Pitt | [email protected] | | Boris | Trump | NULL | | Burt | Tyson | [email protected] | +-------------+------------+-------------------+
यहां, मैंने उन सभी स्वामियों को लौटाने के लिए कोष्ठक वाइल्डकार्ड को प्रतिशत चिह्न के साथ संयोजित किया, जिनका पहला नाम b
से शुरू होता है या h
।
ध्यान दें कि डीबीएमएस में ब्रैकेट ऑपरेटर का व्यापक रूप से अपनाना नहीं है। यह SQL सर्वर में समर्थित है, लेकिन यह MySQL, Oracle, DB2 और SQLite में समर्थित नहीं है। यह देखने के लिए कि क्या यह इस ऑपरेटर का समर्थन करता है, अपने DBMS दस्तावेज़ों की जाँच करें।
द [^]
वाइल्डकार्ड ऑपरेटर
कैरेट कैरेक्टर (^
) का उपयोग ब्रैकेट ऑपरेटर का उपयोग करते समय परिणामों को नकारने के लिए किया जा सकता है।
इसलिए, हम पिछले उदाहरण को केवल उन्हीं स्वामियों को लौटाने के लिए बदलते हैं जिनका पहला नाम नहीं . है b
with से शुरू करें या h
.
SELECT
FirstName,
LastName,
Email
FROM Owners
WHERE FirstName LIKE '[^bh]%';
परिणाम:
+-------------+------------+-------------------+ | FirstName | LastName | Email | |-------------+------------+-------------------| | Nancy | Simpson | NULL | | Woody | Eastwood | [email protected] | +-------------+------------+-------------------+
शून्य मान
प्रतिशत (%
) वाइल्डकार्ड किसी भी चीज़ से मेल खाता है - लगभग। एक चीज जो मेल नहीं खाती वह है NULL
.
SELECT
FirstName,
LastName,
Email
FROM Owners
WHERE Email LIKE '%';
परिणाम:
+-------------+------------+-------------------+ | FirstName | LastName | Email | |-------------+------------+-------------------| | Homer | Connery | [email protected] | | Bart | Pitt | [email protected] | | Woody | Eastwood | [email protected] | | Burt | Tyson | [email protected] | +-------------+------------+-------------------+
हमारी तालिका में, NULL
. के साथ दो पंक्तियाँ हैं Email
. में कॉलम, लेकिन वे यहां वापस नहीं किए गए हैं।
प्रदर्शन
ऐसी क्वेरी जिनमें LIKE
. शामिल हैं ऑपरेटर अन्य प्रश्नों की तुलना में बहुत धीमी गति से चल सकता है, और आपको संभवतः LIKE
. का उपयोग करने से बचना चाहिए ऑपरेटर जब तक आपको वास्तव में इसकी आवश्यकता न हो। %
का उपयोग करना उपसर्ग के रूप में ऑपरेटर विशेष रूप से धीमा हो सकता है।
इसका मतलब यह नहीं है कि आपको इसका इस्तेमाल बिल्कुल नहीं करना चाहिए। LIKE
ऑपरेटर एसक्यूएल का एक अभिन्न अंग है, और आप कई परिदृश्यों का सामना करेंगे जहां यह एकमात्र विकल्प होगा (या कम से कम, सबसे अच्छा विकल्प)।