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

MySQL में समान पहले नाम और मिलते-जुलते अंतिम नाम (अलग केस) वाले रिकॉर्ड कैसे चुनें?

MySQL में LOWER() का उपयोग करके केस-असंवेदनशील अंतिम नाम मिलान

जब अंतिम नाम समान हों लेकिन केस अलग हो (जैसे 'Smith' और 'smith'), तो LOWER() या UPPER() फ़ंक्शन का उपयोग करके केस-असंवेदनशील तुलना करें।

उदाहरण के साथ पूर्ण कार्यान्वयन

टेबल बनाना

mysql> CREATE TABLE DemoTable623 (
    FirstName VARCHAR(100),
    LastName VARCHAR(100),
    Age INT
);

रिकॉर्ड डालना (केस विविधता के साथ)

mysql> INSERT INTO DemoTable623 VALUES
('John', 'Smith', 23),
('Adam', 'smith', 23),
('Chris', 'Brown', 24),
('Robert', 'brown', 21);

सभी रिकॉर्ड देखना

mysql> SELECT * FROM DemoTable623;

आउटपुट:

+-----------+----------+------+
| FirstName | LastName | Age  |
+-----------+----------+------+
| John      | Smith    | 23   |
| Adam      | smith    | 23   |
| Chris     | Brown    | 24   |
| Robert    | brown    | 21   |
+-----------+----------+------+
4 rows in set (0.00 sec)

केस-असंवेदनशील अंतिम नाम 'smith' के लिए क्वेरी

mysql> SELECT FirstName FROM DemoTable623 WHERE LOWER(LastName) = 'smith';

आउटपुट:

+-----------+
| FirstName |
+-----------+
| John      |
| Adam      |
+-----------+
2 rows in set (0.00 sec)

व्याख्या:

  • LOWER(LastName) - कॉलम मान को लोअरकेस में बदलता है
  • 'smith' - तुलना मान (लोअरकेस में)
  • 'Smith' → 'smith' ✓, 'smith' → 'smith' ✓

विकल्प विधियाँ

1. UPPER() के साथ
SELECT FirstName FROM DemoTable623 WHERE UPPER(LastName) = 'SMITH';
2. केस-असंवेदनशील कॉलेशन (यदि टेबल कॉलेशन ci है)
-- यदि कॉलेशन utf8mb4_general_ci (ci = केस-इनसेंसिटिव) है
SELECT FirstName FROM DemoTable623 WHERE LastName = 'smith';  -- काम करता है!

डिफ़ॉल्ट MySQL कॉलेशन (_ci अंत वाला) केस-असंवेदनशील होते हैं।

3. COLLATE क्लॉज के साथ स्पष्ट
SELECT FirstName FROM DemoTable623 
WHERE LastName COLLATE utf8mb4_general_ci = 'smith';
4. बाइनरी तुलना (केस-सेंसिटिव)
SELECT FirstName FROM DemoTable623 WHERE LastName = BINARY 'Smith';  -- केवल 'Smith'
SELECT FirstName FROM DemoTable623 WHERE LastName COLLATE utf8mb4_bin = 'Smith';

प्रदर्शन विचार

  • LOWER(LastName) इंडेक्स उपयोग को रोकता है (जब तक फंक्शनल इंडेक्स न हो)
  • केस-असंवेदनशील कॉलेशन (_ci) इंडेक्स उपयोग की अनुमति देता है
  • बड़े टेबल पर, कॉलेशन-आधारित दृष्टिकोण बेहतर

संबंधित: ट्रिम + केस असंवेदनशील

SELECT FirstName FROM DemoTable623 
WHERE LOWER(TRIM(LastName)) = 'smith';

स्पेस और केस दोनों संभालता है।

  1. - MySQL में CASE WHEN से खाली मान के लिए कस्टम नाम प्रदर्शित करें

    MySQL में CASE WHEN स्टेटमेंट का उपयोग करके खाली स्ट्रिंग या NULL मान के लिए कस्टम डिफ़ॉल्ट नाम प्रदर्शित कर सकते हैं। उदाहरण: खाली नाम के लिए Carol Taylor दिखाएं 1. टेबल बनाएं CREATE TABLE DemoTable (Name VARCHAR(20)); 2. डेटा डालें (खाली स्ट्रिंग सहित) INSERT INTO DemoTable VALUES(); --

  1. - MySQL में सबक्वेरी और ORDER BY RAND से अंतिम 50 प्रविष्टियों में से 5 रैंडम पंक्तियाँ चुनें

    बड़ी टेबल से हाल की N पंक्तियों में से रैंडम नमूना लेने के लिए: पहले सबक्वेरी में ORDER BY id DESC LIMIT N से हाल की पंक्तियाँ लें, फिर बाहरी क्वेरी में ORDER BY RAND() LIMIT M लागू करें। टेबल बनाएं (केवल ID) mysql> CREATE TABLE DemoTable1853 ( UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY

  1. Java में MySQL PreparedStatement का WHERE क्लॉज के साथ सही उपयोग Java में MySQL PreparedStatement का WHERE क्लॉज के साथ सही उपयोग

    PreparedStatement सिंटैक्स String query = select yourColumnName from yourTableName where name = ?; PreparedStatement ps = (PreparedStatement) con.prepareStatement(query); ps.setString(columnIndex, yourValue); टेबल और डेटा insert into demo37(name) values(John), (Bob), (John), (Chris), (David), (Jo