SQLite स्ट्रिंग में अन्य स्ट्रिंग क्वेरी होती है


111

मैं यह कैसे करु?

उदाहरण के लिए, यदि मेरा कॉलम "बिल्लियों, कुत्तों, पक्षियों" है और मैं किसी भी पंक्तियों को प्राप्त करना चाहता हूं जहां कॉलम में बिल्लियां हैं?


3
नमूना डेटा के एक सेट के साथ अपने प्रश्न को संपादित करें। यह निर्धारित करना कठिन है कि आप क्या पूछ रहे हैं।
पी। काम्पबेल

100 वीं वोटिंग की शुभकामना।
बिशप

जवाबों:


195

LIKE का उपयोग करना:

SELECT *
  FROM TABLE
 WHERE column LIKE '%cats%'  --case-insensitive

4
ध्यान रखें कि यह उपयुक्त नहीं है जहां आप जिस स्ट्रिंग की खोज कर रहे हैं वह परिवर्तनशील है या इसमें एक विशेष वर्ण शामिल है जैसे कि %
सैम

10
यदि "बिल्लियों" एक अन्य तालिका से एक क्षेत्र है, तो आप '%'||table2.field||'%'मानदंड के रूप में उपयोग कर सकते हैं
स्टीफन च।

96

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

SELECT *
  FROM TABLE  
 WHERE instr(column, 'cats') > 0;

इसके अलावा, ध्यान रखें कि LIKEमामला असंवेदनशील है , जबकि instrमामला संवेदनशील है


13
जिसका अर्थ है कि आपका minSdkVersion 21 (5.0-लॉलीपॉप)
मकिसिम तुराएव

1
@WilliamEntriken मेरे अपने परीक्षण में, instr(...)थोड़ा तेज़ (0.32s बनाम 0.34s) है। .timer onनिष्पादन समय को मापने के लिए आप SQLite में उपयोग कर सकते हैं ।
अरनी97
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.