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

MySQL में UPPER() और IN() का उपयोग करके केस-असंवेदनशील SELECT करना

MySQL में केस-असंवेदनशील IN() क्वेरी

डिफ़ॉल्ट रूप से, MySQL स्ट्रिंग तुलना कॉलेशन पर निर्भर करती है। IN() के साथ स्पष्ट केस-असंवेदनशील मिलान के लिए, तुलना से पहले दोनों पक्षों पर UPPER() या LOWER() लागू करें।

उदाहरण: नाम फ़िल्टरिंग

mysql> CREATE TABLE DemoTable1460 (
    -> Name VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.91 sec)

mysql> INSERT INTO DemoTable1460 VALUES ('Chris'), ('David'), ('Bob'), ('Robert');
Query OK, 4 rows affected (0.15 sec)

mysql> SELECT * FROM DemoTable1460;
+--------+
| Name   |
+--------+
| Chris  |
| David  |
| Bob    |
| Robert |
+--------+
4 rows in set (0.00 sec)

केस-असंवेदनशील IN() क्वेरी

mysql> SELECT * FROM DemoTable1460
    -> WHERE UPPER(Name) IN ('CHRIS', 'BOB');

परिणाम

+-------+
| Name  |
+-------+
| Chris |
| Bob   |
+-------+
2 rows in set (0.00 sec)

तरीकों की तुलना

सर्वोत्तम अभ्यास

  • स्कीमा स्तर: केस-असंवेदनशील कॉलेशन का उपयोग करें (utf8mb4_general_ci, utf8mb4_unicode_ci)
  • क्वेरी स्तर: तदर्थ केस-असंवेदनशीलता के लिए UPPER()/LOWER()
  • प्रदर्शन: बड़े टेबल पर UPPER() पूर्ण स्कैन का कारण बनता है; कॉलेशन या फंक्शनल इंडेक्स (MySQL 8.0+) पसंद करें

फंक्शनल इंडेक्स (MySQL 8.0+)

ALTER TABLE DemoTable1460
ADD INDEX idx_upper_name ((UPPER(Name)));

फिर WHERE UPPER(Name) IN (...) इंडेक्स का उपयोग कर सकता है।

  1. - MySQL में SELECT स्टेटमेंट के अंदर CASE स्टेटमेंट का उपयोग कैसे करें?

    MySQL में CASE WHEN का उपयोग करके सशर्त तर्क MySQL में CASE WHEN अभिव्यक्ति आपको SQL क्वेरीज़ के अंदर सशर्त तर्क (if-else तर्क) लागू करने की अनुमति देती है। यह SELECT, WHERE, ORDER BY, GROUP BY आदि में उपयोग किया जा सकता है। टेबल बनाना ); Query OK, 0 rows affected (0.63 sec) डेटा डालना INSERT IN

  1. - MySQL में INSERT INTO SELECT से एक टेबल से दूसरी में डेटा कॉपी करें

    MySQL का INSERT INTO ... SELECT स्टेटमेंट एक क्वेरी में एक टेबल से डेटा चुनकर दूसरी टेबल में डालता है। सिंटैक्स INSERT INTO लक्ष्य_टेबल (कॉलम1, कॉलम2, ...) SELECT कॉलम1, कॉलम2, ... FROM स्रोत_टेबल WHERE शर्त; उदाहरण: NULL रहित रिकॉर्ड कॉपी करना 1. स्रोत टेबल बनाएं ); 2. डेटा डालें (कुछ NULL के

  1. - MySQL में CASE WHEN के साथ काउंट कैसे करें?

    MySQL में शर्ती गिनती (कंडीशनल काउंट) करने के लिए SUM(CASE WHEN ... THEN 1 ELSE 0 END) पैटर्न का उपयोग करें। यह एक ही क्वेरी में एकाधिक शर्तों की गिनती करने का कुशल तरीका है। उदाहरण: विशिष्ट मार्क्स की गिनती प्रति छात्र डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1910 ( FirstName VARCHAR

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
विधिक्वेरीकेस-असंवेदनशील?इंडेक्स उपयोग
UPPER/LOWERWHERE UPPER(col) IN (...)हांनहीं (कॉलम पर फ़ंक्शन)
केस-असंवेदनशील कॉलेशनWHERE col IN (...) COLLATE utf8mb4_general_ciहांहां (यदि कॉलम कॉलेशन मेल खाता है)
बाइनरी तुलनाWHERE BINARY col IN (...)नहीं (केस-संवेदनशील)हां