Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में LIKE ऑपरेटर कैसे काम करता है

MySQL में, LIKE ऑपरेटर SQL पैटर्न का उपयोग करके पैटर्न मिलान करता है।

यदि स्ट्रिंग दिए गए पैटर्न से मेल खाती है, तो परिणाम 1 . है , अन्यथा यह 0 है ।

पैटर्न को एक शाब्दिक स्ट्रिंग होने की आवश्यकता नहीं है। इस फ़ंक्शन का उपयोग स्ट्रिंग एक्सप्रेशन और टेबल कॉलम के साथ किया जा सकता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

expr LIKE pat [ESCAPE 'escape_char']

जहां expr इनपुट स्ट्रिंग है और pat वह पैटर्न है जिसके लिए आप स्ट्रिंग का परीक्षण कर रहे हैं।

वैकल्पिक ESCAPE क्लॉज आपको एक एस्केप कैरेक्टर निर्दिष्ट करने की अनुमति देता है। डिफॉल्ट एस्केप कैरेक्टर \ है , इसलिए यदि आपको इसे बदलने की आवश्यकता नहीं है तो आप इस खंड को छोड़ सकते हैं।

उदाहरण 1 - मूल उपयोग

SELECT . में इस ऑपरेटर का उपयोग कैसे करें इसका एक उदाहरण यहां दिया गया है कथन:

SELECT 'Charlie' LIKE 'Char%';

परिणाम:

+------------------------+
| 'Charlie' LIKE 'Char%' |
+------------------------+
|                      1 |
+------------------------+

इस मामले में, वापसी मूल्य 1 . है जिसका अर्थ है कि इनपुट स्ट्रिंग पैटर्न से मेल खाती है। विशेष रूप से, हमने निर्दिष्ट किया है कि इनपुट स्ट्रिंग Char . से शुरू होनी चाहिए और किसी भी चीज़ के साथ समाप्त करें। % वर्ण किसी भी संख्या में वर्णों से मेल खाता है (शून्य वर्णों सहित)।

अगर हम % को छोड़ देते हैं तो यहां क्या होता है :

SELECT 'Charlie' LIKE 'Char';

परिणाम:

+-----------------------+
| 'Charlie' LIKE 'Char' |
+-----------------------+
|                     0 |
+-----------------------+

वापसी परिणाम 0 . है जिसका अर्थ है कोई मेल नहीं। ऐसा इसलिए है क्योंकि हमने किसी अन्य वर्ण को निर्दिष्ट करने के लिए वाइल्डकार्ड वर्ण का उपयोग नहीं किया है।

उदाहरण 2 - _ वाइल्डकार्ड

हमारे पास _ . का उपयोग करने का विकल्प भी है वाइल्डकार्ड वर्ण केवल एक वर्ण निर्दिष्ट करने के लिए। यहां एक उदाहरण दिया गया है:

SELECT 'Charlie' LIKE 'Ch_rlie';

परिणाम:

+--------------------------+
| 'Charlie' LIKE 'Ch_rlie' |
+--------------------------+
|                        1 |
+--------------------------+

यदि आवश्यक हो तो दो वाइल्डकार्ड वर्णों को एक पैटर्न में जोड़ा जा सकता है:

SELECT 'Charlie likes donuts' LIKE 'Ch_rlie%' AS 'Result';

परिणाम:

+--------+
| Result |
+--------+
|      1 |
+--------+

यहाँ कुछ और हैं:

SELECT 
  'Charlie likes donuts' LIKE 'Ch_rlie%donuts' AS 'Result 1',
  'Charlie likes donuts' LIKE 'Ch_rlie%nuts' AS 'Result 2',
  'Charlie likes donuts' LIKE 'Ch%rlie %likes %' AS 'Result 3',
  'Charlie likes donuts' LIKE '% likes %' AS 'Result 4';

परिणाम:

+----------+----------+----------+----------+
| Result 1 | Result 2 | Result 3 | Result 4 |
+----------+----------+----------+----------+
|        1 |        1 |        1 |        1 |
+----------+----------+----------+----------+

आइए उस उदाहरण में कुछ बदलाव करें ताकि हम कुछ उदाहरण देख सकें जब वे मेल नहीं खाते:

SELECT 
  'Charlie likes donuts' LIKE 'Ch%rlie_donuts' AS 'Result 1',
  'Charlie likes donuts' LIKE 'Charlie_nuts' AS 'Result 2',
  'Charlie likes donuts' LIKE 'Charlie _likes donuts' AS 'Result 3',
  'Charlie likes donuts' LIKE '_ likes _' AS 'Result 4';

परिणाम:

+----------+----------+----------+----------+
| Result 1 | Result 2 | Result 3 | Result 4 |
+----------+----------+----------+----------+
|        0 |        0 |        0 |        0 |
+----------+----------+----------+----------+

उदाहरण 3 - एक डेटाबेस उदाहरण

LIKE ऑपरेटर का उपयोग अक्सर WHERE . में किया जाता है SELECT . का खंड डेटाबेस को क्वेरी करते समय कथन। जब इसका इस तरह से उपयोग किया जाता है, तो यह परिणामों को केवल उन रिकॉर्ड तक सीमित कर देता है जो मेल खाते हैं, लेकिन हम वास्तविक परिणाम देखते हैं (न कि केवल 1 या 0 )।

डेटाबेस क्वेरी में हम इस ऑपरेटर का उपयोग कैसे कर सकते हैं इसका एक उदाहरण यहां दिया गया है:

SELECT ArtistId, ArtistName
FROM Artists
WHERE ArtistName LIKE 'B%';

परिणाम:

+----------+----------------+
| ArtistId | ArtistName     |
+----------+----------------+
|        4 | Buddy Rich     |
|       11 | Black Sabbath  |
|       15 | Birds of Tokyo |
|       16 | Bodyjar        |
+----------+----------------+

इस मामले में, यह एक साधारण प्रश्न था जो उन सभी कलाकारों को लौटाता है जिनके नाम B . अक्षर से शुरू होते हैं ।

यहाँ उस तालिका में कलाकारों की पूरी सूची है:

SELECT ArtistId, ArtistName
FROM Artists;

परिणाम:

+----------+------------------------+
| ArtistId | ArtistName             |
+----------+------------------------+
|        1 | Iron Maiden            |
|        2 | AC/DC                  |
|        3 | Allan Holdsworth       |
|        4 | Buddy Rich             |
|        5 | Devin Townsend         |
|        6 | Jim Reeves             |
|        7 | Tom Jones              |
|        8 | Maroon 5               |
|        9 | The Script             |
|       10 | Lit                    |
|       11 | Black Sabbath          |
|       12 | Michael Learns to Rock |
|       13 | Carabao                |
|       14 | Karnivool              |
|       15 | Birds of Tokyo         |
|       16 | Bodyjar                |
+----------+------------------------+

उदाहरण 4 - बैकस्लैश कैरेक्टर से बचना

क्या होता है यदि वाइल्डकार्ड वर्णों में से एक आपकी इनपुट स्ट्रिंग में है और आपको इसके विरुद्ध एक मिलान करने की आवश्यकता है? आप इसे बैकस्लैश कैरेक्टर (\ . से बचा सकते हैं) ) एस्केप कैरेक्टर के साथ और बिना ऐसी खोज का एक उदाहरण यहां दिया गया है:

SELECT 
  'usr_123' LIKE 'usr_123' AS 'Without escape',
  'usr_123' LIKE 'usr\_123' AS 'With escape';

परिणाम:

+----------------+-------------+
| Without escape | With escape |
+----------------+-------------+
|              1 |           1 |
+----------------+-------------+

इस मामले में, वे दोनों मेल खाते थे, लेकिन अलग-अलग कारणों से। पहली पंक्ति का मिलान हुआ क्योंकि वाइल्डकार्ड ने निर्दिष्ट किया था कि कोई भी वर्ण मेल खाएगा। दूसरी लाइन भी मेल खाती थी, लेकिन सिर्फ इसलिए कि इनपुट स्ट्रिंग में अंडरस्कोर सही जगह पर था।

आइए इनपुट स्ट्रिंग को थोड़ा बदल दें ताकि हमें एक अलग परिणाम मिले:

SELECT 
  'usr+123' LIKE 'usr_123' AS 'Without escape',
  'usr+123' LIKE 'usr\_123' AS 'With escape';

परिणाम:

+----------------+-------------+
| Without escape | With escape |
+----------------+-------------+
|              1 |           0 |
+----------------+-------------+

न बचा हुआ संस्करण सकारात्मक लौटा, क्योंकि वाइल्डकार्ड का मतलब था कि उस स्थान पर हमारे पास कोई भी चरित्र हो सकता है। बच निकले संस्करण में स्पष्ट रूप से कहा गया है कि केवल अंडरस्कोर वर्ण (_ ) से मेल खाएगा। इनपुट स्ट्रिंग में उस स्थान पर अंडरस्कोर वर्ण नहीं था और इसलिए परिणाम नकारात्मक था।

उदाहरण 5 - ESCAPE खंड

आप ESCAPE . का भी उपयोग कर सकते हैं अपने खुद के कस्टम एस्केप कैरेक्टर को निर्दिष्ट करने के लिए क्लॉज। यहां एक उदाहरण दिया गया है:

SELECT 
  'usr_123' LIKE 'usr|_123' ESCAPE '|' AS 'String 1',
  'usr+123' LIKE 'usr|_123' ESCAPE '|' AS 'String 2';

परिणाम:

+----------+----------+
| String 1 | String 2 |
+----------+----------+
|        1 |        0 |
+----------+----------+

उदाहरण 6 - अंकीय व्यंजक

LIKE . का MySQL कार्यान्वयन ऑपरेटर संख्यात्मक अभिव्यक्तियों का उपयोग करने की अनुमति देता है। यहां एक उदाहरण दिया गया है:

SELECT 
  1234 LIKE '12%',
  1234 LIKE '12_';

परिणाम:

+-----------------+-----------------+
| 1234 LIKE '12%' | 1234 LIKE '12_' |
+-----------------+-----------------+
|               1 |               0 |
+-----------------+-----------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - WHERE क्लॉज में COUNT(*) का उपयोग करना

  2. Mysql JDBC ड्राइवर का उपयोग करके Android को MySQL से कैसे कनेक्ट करें

  3. एडब्ल्यूएस आरडीएस पर MySQL को PostgreSQL में माइग्रेट करना, भाग 4

  4. लूपिंग के बिना PHP और MySQL के साथ स्कोर तालिका से किसी की 'रैंक' कैसे प्राप्त करें?

  5. MySQL बिनलॉग सर्वर की खोज - रिपल