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

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

SQLite में, आप LIKE . का उपयोग कर सकते हैं पैटर्न मिलान तुलना करने के लिए आपके प्रश्नों में ऑपरेटर।

उदाहरण के लिए, आप इसे अपने WHERE . में जोड़ सकते हैं क्लॉज केवल उन पंक्तियों को वापस करने के लिए है जो किसी दिए गए पैटर्न से मेल खाते हैं।

हालांकि, इसे WHERE . में जोड़ना क्लॉज ही एकमात्र तरीका नहीं है जिससे आप LIKE . का उपयोग कर सकते हैं ऑपरेटर। आप इसका उपयोग बूलियन मान वापस करने के लिए भी कर सकते हैं।

मूल उदाहरण

यहां एक बुनियादी उदाहरण दिया गया है जो LIKE . का उपयोग करता है एक WHERE . में ऑपरेटर खंड।

SELECT * FROM Artist
WHERE Name LIKE 'Black%';

परिणाम:

ArtistId    Name               
----------  -------------------
11          Black Label Society
12          Black Sabbath      
169         Black Eyed Peas    

इस मामले में मैं उन सभी कलाकारों को लौटाना चाहता था जिनका नाम ब्लैक . से शुरू होता है .

प्रतिशत चिह्न एक वाइल्डकार्ड वर्ण है जो किसी भी वर्ण (रिक्त स्थान सहित) के शून्य या अधिक से मेल खाता है।

वाइल्डकार्ड के बिना

अगर मैंने वाइल्डकार्ड चरित्र का उपयोग नहीं किया होता, तो मुझे कोई परिणाम नहीं मिलता।

मेरे कहने का एक उदाहरण यहां दिया गया है:

SELECT * FROM Artist
WHERE Name LIKE 'Black';

परिणाम:

 

(यह जानबूझकर खाली है, क्योंकि कोई परिणाम नहीं थे।)

एकाधिक वाइल्डकार्ड

यदि आवश्यक हो तो आप एक से अधिक वाइल्डकार्ड वर्णों का उपयोग कर सकते हैं। इस उदाहरण में मैं अपने पैटर्न के सामने एक और जोड़ देता हूं।

SELECT * FROM Artist
WHERE Name LIKE '%Black%';

परिणाम:

ArtistId    Name               
----------  -------------------
11          Black Label Society
12          Black Sabbath      
38          Banda Black Rio    
137         The Black Crowes   
169         Black Eyed Peas    

इसके परिणामस्वरूप और पंक्तियाँ वापस आ जाती हैं, क्योंकि दो पंक्तियाँ हैं जिनमें काली . है उनके नाम पर, लेकिन शुरुआत में नहीं।

अंडरस्कोर (_) वाइल्डकार्ड

आपके पास अंडरस्कोर का उपयोग करने का विकल्प भी है (_ ) वाइल्डकार्ड।

यह वाइल्डकार्ड वर्ण ठीक एक वर्ण (किसी भी वर्ण) से मेल खाता है।

बिल्लियों called नामक निम्न तालिका पर विचार करें :

CatId       CatName   
----------  ----------
1           Brush     
2           Brash     
3           Broosh    
4           100%Fluff 
5           100$Fluff 

हां, उनमें से कुछ बिल्लियों के अजीब नाम हैं, लेकिन वे काम आएंगी।

उस तालिका के विरुद्ध क्वेरी में अंडरस्कोर वाइल्डकार्ड का उपयोग करने का एक उदाहरण यहां दिया गया है।

SELECT * FROM Cats
WHERE CatName LIKE 'Br_sh';

परिणाम:

CatId       CatName   
----------  ----------
1           Brush     
2           Brash       

ध्यान दें कि ब्रूश . नाम की बिल्ली शामिल नहीं है।

ब्रूश को शामिल करने के लिए , मुझे दो अंडरस्कोर का उपयोग करना होगा:

SELECT * FROM Cats
WHERE CatName LIKE 'Br__sh';

परिणाम:

CatId       CatName   
----------  ----------
3           Broosh       

हालांकि, इसमें अन्य दो बिल्लियों को शामिल नहीं किया गया है।

मैं अन्य बिल्लियों को शामिल करने के लिए हमेशा प्रतिशत चिह्न का उपयोग कर सकता था।

SELECT * FROM Cats
WHERE CatName LIKE 'Br%sh';

परिणाम:

CatId       CatName   
----------  ----------
1           Brush     
2           Brash     
3           Broosh      

हालांकि, ध्यान रखें कि यह Br . के बीच दो से अधिक वर्णों वाले नाम भी लौटाएगा और

एस्केप क्लॉज

कभी-कभी आपके डेटा में वास्तव में वाइल्डकार्ड वर्ण शामिल हो सकते हैं। दूसरे शब्दों में, डेटा में अंडरस्कोर या प्रतिशत चिह्न होते हैं।

यह एक समस्या हो सकती है यदि आप वास्तव में अंडरस्कोर या प्रतिशत चिह्न को शाब्दिक वर्ण के रूप में मिलान करने का प्रयास कर रहे हैं, न कि वाइल्डकार्ड के रूप में।

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

यहाँ फिर से तालिका है:

CatId       CatName   
----------  ----------
1           Brush     
2           Brash     
3           Broosh    
4           100%Fluff 
5           100$Fluff 

अगर मैं केवल उन बिल्लियों को वापस करना चाहता हूं जिनके नाम 100%F . से शुरू होते हैं तो मुझे % . से बचना होगा . अगर मैं इससे नहीं बचा, तो मुझे अवांछित परिणाम मिलेंगे।

अगर मैं कोई क्वेरी बिना चलाता हूं, तो यहां बताया गया है प्रतिशत चिह्न से बचना।

SELECT * FROM Cats
WHERE CatName LIKE '100%F';

परिणाम:

CatId       CatName   
----------  ----------
4           100%Fluff 
5           100$Fluff 

इस मामले में प्रतिशत चिह्न भी डॉलर चिह्न से मेल खाता है, क्योंकि प्रतिशत चिह्न को वाइल्डकार्ड वर्ण के रूप में माना जा रहा था।

यह सुनिश्चित करने के लिए कि प्रतिशत चिह्न को वाइल्डकार्ड वर्ण के रूप में नहीं माना जाता है, हम ESCAPE का उपयोग कर सकते हैं खंड।

SELECT * FROM Cats
WHERE CatName LIKE '100\%%F' ESCAPE '\';

परिणाम:

CatId       CatName   
----------  ----------
4           100%Fluff 

बूलियन मान लौटाएं

आप LIKE . का उपयोग कर सकते हैं एक 0 . वापस करने के लिए ऑपरेटर या 1 , इस पर निर्भर करता है कि कोई मैच है या नहीं।

यहां एक उदाहरण दिया गया है।

SELECT 
  CatName,
  CatName LIKE 'Br%' 
FROM Cats;

परिणाम:

CatName     CatName LIKE 'Br%'
----------  ------------------
Brush       1                 
Brash       1                 
Broosh      1                 
100%Fluff   0                 
100$Fluff   0                 

इस मामले में, पहली तीन पंक्तियाँ मापदंड से मेल खाती हैं, और अंतिम दो पंक्तियाँ नहीं।

केस-सेंसिटिविटी

डिफ़ॉल्ट रूप से, SQLite LIKE एएससीआईआई वर्णों के लिए ऑपरेटर केस-असंवेदनशील है। इसका मतलब है कि यह अपरकेस और लोअरकेस वर्णों से मेल खाएगा, भले ही आप अपने पैटर्न में किसी भी मामले का उपयोग करें।

आप केस_सेंसिटिव_लाइक . का उपयोग कर सकते हैं PRAGMA कथन ASCII श्रेणी में केस-संवेदी मिलान करने के लिए।

उदाहरण के लिए देखें कि SQLite के LIKE ऑपरेटर को केस-सेंसिटिव कैसे बनाया जाए।

द लाइक () फंक्शन

ऐसा करने का एक वैकल्पिक तरीका like() . का उपयोग करना है समारोह।

यह फ़ंक्शन ठीक वही काम करता है जो LIKE . करता है ऑपरेटर, सिवाय इसके कि आपको थोड़ा अलग सिंटैक्स का उपयोग करने की आवश्यकता है।

उपरोक्त सभी उदाहरणों को like() . का उपयोग करने के लिए फिर से लिखा जा सकता है यदि आवश्यक हो तो कार्य करें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जब पहली बार डेटाबेस खोलकर ऑनक्रिएट को ट्रिगर किया जाता है, तो SQLite हेल्पर ऑनक्रिएट से SQLite डेटाबेस नहीं खोल सकता

  2. SQLite में प्राथमिक कुंजी वाली डुप्लिकेट पंक्तियों को हटाने के 6 तरीके

  3. अपने परिणाम सेट में "गणना" कॉलम जोड़ने के लिए ग्रुप बाय के साथ SQLite काउंट () को मिलाएं

  4. पूर्णांक स्तंभ का डिफ़ॉल्ट मान सेट करें SQLite

  5. SQLite ने PRINTF () का नाम बदलकर FORMAT () कर दिया है