INSTR() फंक्शन के साथ कस्टम ऑर्डरिंग
INSTR(str, substr) फंक्शन str में substr की पहली घटना की स्थिति (1-आधारित) लौटाता है। मिलने पर स्थिति, न मिलने पर 0। ORDER BY INSTR(...) से शब्द की स्थिति के अनुसार क्रमबद्ध करें।
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable822(Word TEXT); Query OK, 0 rows affected (1.11 sec)
रिकॉर्ड्स इन्सर्ट करना
mysql> INSERT INTO DemoTable822 VALUES('Forever'),('ever'),('every'),('everyday');
Query OK, 4 rows affected (...)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable822;
+----------+ | Word | +----------+ | Forever | | ever | | every | | everyday | +----------+ 4 rows in set (0.00 sec)
'ever' शब्द की स्थिति के अनुसार क्रमबद्ध करना
mysql> SELECT * FROM DemoTable822
WHERE Word LIKE '%ever%'
ORDER BY INSTR(Word, 'ever'), Word;
परिणाम
+----------+ | Word | +----------+ | ever | | every | | everyday | | Forever | +----------+ 4 rows in set (0.00 sec)
स्थिति विश्लेषण
| Word | INSTR(Word, 'ever') | व्याख्या |
|---|---|---|
| ever | 1 | स्थिति 1 पर शुरू होता है |
| every | 1 | स्थिति 1 पर शुरू होता है |
| everyday | 1 | स्थिति 1 पर शुरू होता है |
| Forever | 4 | स्थिति 4 पर शुरू होता है (F-o-r-e-v-e-r) |
पहले तीन की स्थिति 1 समान है, इसलिए द्वितीयक क्रम Word (वर्णमाला) लागू होता है: ever, everyday, every → वास्तव में: ever, every, everyday
INSTR() vs LOCATE()
| फंक्शन | सिंटैक्स | वापसी |
|---|---|---|
INSTR(str, substr) | 2 आर्गुमेंट | स्थिति (1-आधारित), 0 यदि नहीं मिला |
LOCATE(substr, str) | 2-3 आर्गुमेंट | स्थिति, तीसरा आर्गुमेंट = प्रारंभ स्थिति |
POSITION(substr IN str) | मानक SQL | स्थिति |
केस सेंसिटिविटी
- डिफ़ॉल्ट: केस-इनसेंसिटिव (कोलेशन पर निर्भर)
- केस-सेंसिटिव:
INSTR(BINARY Word, 'ever')याLOCATE('ever', BINARY Word)
उन्नत पैटर्न: शब्द सीमा के साथ
पूरे शब्द 'ever' के लिए (न कि 'every' का हिस्सा):
SELECT * FROM DemoTable822 WHERE Word REGEXP '[[:<:]]ever[[:>:]]' ORDER BY INSTR(Word, 'ever');
LOCATE के साथ प्रारंभ स्थिति
-- दूसरी घटना ढूंढें
LOCATE('ever', Word, INSTR(Word, 'ever') + 1)
उपयोग के मामले
- खोज परिणामों में प्रासंगिकता क्रम (शुरुआत में कीवर्ड वाले पहले)
- यूआरएल/पथ क्रमबद्ध करना (डोमेन/पथ स्थिति)
- टेक्स्ट विश्लेषण में कीवर्ड स्थिति
- ऑटोकंप्लीट सुझाव क्रम
प्रदर्शन नोट
INSTR() फंक्शन कॉल इंडेक्स उपयोग रोकता है। बड़े डेटासेट्स के लिए फुलटेक्स्ट खोज या एप्लिकेशन-लेयर रैंकिंग का उपयोग करें।