FIELD() फंक्शन के साथ कस्टम क्रम
FIELD(str, str1, str2, ...) फंक्शन स्ट्रिंग की सूची में स्थिति (1-आधारित) लौटाता है। ORDER BY FIELD(...) का उपयोग करके परिणाम को कस्टम क्रम में व्यवस्थित करें।
उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना
mysql> CREATE TABLE DemoTable849(Color VARCHAR(100)); Query OK, 0 rows affected (0.56 sec)
रिकॉर्ड्स इन्सर्ट करना
mysql> INSERT INTO DemoTable849 VALUES('RED'),('ORANGE'),('BLUE'),('GREEN');
Query OK, 4 rows affected (...)
सभी रिकॉर्ड्स देखना (इन्सर्ट क्रम)
mysql> SELECT * FROM DemoTable849;
+--------+ | Color | +--------+ | RED | | ORANGE | | BLUE | | GREEN | +--------+ 4 rows in set (0.00 sec)
कस्टम क्रम में क्रमबद्ध करने की क्वेरी
mysql> SELECT * FROM DemoTable849
ORDER BY FIELD(Color, 'RED', 'GREEN', 'BLUE', 'ORANGE');
परिणाम
+--------+ | Color | +--------+ | RED | | GREEN | | BLUE | | ORANGE | +--------+ 4 rows in set (0.00 sec)
FIELD() कैसे काम करता है
FIELD('RED', 'RED', 'GREEN', 'BLUE', 'ORANGE') -- 1 लौटाता है
FIELD('GREEN', 'RED', 'GREEN', 'BLUE', 'ORANGE') -- 2 लौटाता है
FIELD('BLUE', 'RED', 'GREEN', 'BLUE', 'ORANGE') -- 3 लौटाता है
FIELD('ORANGE', 'RED', 'GREEN', 'BLUE', 'ORANGE') -- 4 लौटाता है
FIELD('PINK', 'RED', 'GREEN', 'BLUE', 'ORANGE') -- 0 लौटाता है (नहीं मिला)
ORDER BY FIELD(...) संख्यात्मक क्रम (1,2,3,4,0) में क्रमबद्ध करता है, इसलिए सूचीबद्ध मान पहले आते हैं, फिर बाकी (0)।
लिस्ट में नहीं मिलने वाले मान
- डिफ़ॉल्ट: अंत में आते हैं (FIELD = 0)
- पहले लाने के लिए:
ORDER BY FIELD(Color, 'RED','GREEN') DESC, Color- लेकिन 0 अंत में ही रहता है - बेहतर:
ORDER BY CASE WHEN Color IN ('RED','GREEN') THEN 0 ELSE 1 END, FIELD(Color, 'RED','GREEN'), Color
व्यावहारिक उदाहरण
ऑर्डर स्टेटस क्रम
ORDER BY FIELD(Status, 'PENDING', 'PROCESSING', 'SHIPPED', 'DELIVERED', 'CANCELLED')
प्राथमिकता स्तर
ORDER BY FIELD(Priority, 'CRITICAL', 'HIGH', 'MEDIUM', 'LOW')
दिन क्रम
ORDER BY FIELD(DayName, 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY')
FIELD() vs CASE WHEN
| पहलू | FIELD() | CASE WHEN |
|---|---|---|
| सिंटैक्स | सरल सूची के लिए संक्षिप्त | जटिल शर्तों के लिए |
| पैटर्न मिलान | नहीं (सटीक मिलान) | हाँ (LIKE, रेंज, आदि) |
| NULL हैंडलिंग | NULL = 0 | स्पष्ट नियंत्रण |
| प्रदर्शन | थोड़ा तेज | तुलनीय |
डायनामिक क्रम (एप्लिकेशन से)
-- एप्लिकेशन कोड में क्रम सूची बनाएं
$order = ['RED', 'GREEN', 'BLUE'];
$query = "ORDER BY FIELD(Color, '" . implode("','", $order) . "')";