Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में ORDER BY INSTR() से विशिष्ट शब्द क्रमबद्ध करना

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)

स्थिति विश्लेषण

WordINSTR(Word, 'ever')व्याख्या
ever1स्थिति 1 पर शुरू होता है
every1स्थिति 1 पर शुरू होता है
everyday1स्थिति 1 पर शुरू होता है
Forever4स्थिति 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() फंक्शन कॉल इंडेक्स उपयोग रोकता है। बड़े डेटासेट्स के लिए फुलटेक्स्ट खोज या एप्लिकेशन-लेयर रैंकिंग का उपयोग करें।

  1. - MySQL में पहले अक्षर के आधार पर ORDER BY कैसे करें?

    परिचय MySQL में किसी कॉलम के पहले अक्षर के आधार पर रिकॉर्ड्स को क्रमबद्ध करने के लिए ORDER BY CASE स्टेटमेंट का उपयोग किया जाता है। यह तब उपयोगी होता है जब आपको किसी विशेष अक्षर से शुरू होने वाले रिकॉर्ड्स को प्राथमिकता देनी हो। उदाहरण: टेबल बनाना और डेटा डालना ); Query OK, 0 rows affected (2.26 s

  1. - MySQL में REGEXP का उपयोग करके विशिष्ट शब्द कैसे खोजें?

    MySQL में REGEXP का उपयोग करके पैटर्न मिलान और शब्द खोज MySQL का REGEXP ऑपरेटर नियमित अभिव्यक्तियों का उपयोग करके पैटर्न मिलान करने की अनुमति देता है। यह सरल LIKE की तुलना में अधिक शक्तिशाली और लचीला है। टेबल बनाना ); Query OK, 0 rows affected (1.82 sec) डेटा डालना ALTER TABLE DemoTable ADD FULL

  1. - MySQL में विशिष्ट कॉलम मान को प्राथमिकता देकर ऑर्डर करें और बाकी को आरोही क्रम में दिखाएं

    MySQL में विशिष्ट मान को शीर्ष पर रखकर कस्टम ऑर्डरिंग MySQL में आप बूलियन अभिव्यक्ति (Column = Value) DESC का उपयोग करके एक विशिष्ट मान को शीर्ष पर रख सकते हैं, उसके बाद शेष मानों को आरोही (या अवरोही) क्रम में रख सकते हैं। टेबल बनाना ); Query OK, 0 rows affected (1.68 sec) डेटा डालना INSERT INTO