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

MySQL में FIND_IN_SET और REPLACE के साथ सेमीकोलन से अलग सूची से विशिष्ट रिकॉर्ड खोजना

MySQL में REPLACE और FIND_IN_SET के साथ सेमीकोलन-सेपरेटेड सूची में मान खोजना

FIND_IN_SET() केवल अल्पविराम (,) सेपरेटर के साथ काम करता है। सेमीकोलन (;) या अन्य सेपरेटर के लिए, पहले REPLACE() से सेपरेटर बदलें।

व्यावहारिक उदाहरण

तालिका बनाना

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Value VARCHAR(100)
);

सेमीकोलन से अलग मान डालना

mysql> INSERT INTO DemoTable(Value) VALUES('100;200;300');
mysql> INSERT INTO DemoTable VALUES('1;300;400');
mysql> INSERT INTO DemoTable VALUES('6;7;8;9;10');
mysql> INSERT INTO DemoTable VALUES('1;2;3;4;5');
mysql> INSERT INTO DemoTable VALUES('3;8;9;10');

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

mysql> SELECT * FROM DemoTable;

आउटपुट:

+----+-------------+
| Id | Value       |
+----+-------------+
| 1  | 100;200;300 |
| 2  | 1;300;400   |
| 3  | 6;7;8;9;10  |
| 4  | 1;2;3;4;5   |
| 5  | 3;8;9;10    |
+----+-------------+

मान 8 वाली पंक्तियां खोजने के लिए क्वेरी

mysql> SELECT * FROM DemoTable 
WHERE FIND_IN_SET(8, REPLACE(Value, ';', ',')) > 0;

आउटपुट:

+----+------------+
| Id | Value      |
+----+------------+
| 3  | 6;7;8;9;10 |
| 5  | 3;8;9;10   |
+----+------------+

चरण-दर-चरण

  1. REPLACE(Value, ';', ',') - सेमीकोलन को अल्पविराम में बदलता है
  2. FIND_IN_SET(8, ...) - परिवर्तित स्ट्रिंग में 8 खोजता है
  3. > 0 - मिलने पर (स्थिति 1+), TRUE

प्रदर्शन नोट

  • हर पंक्ति के लिए REPLACE और FIND_IN_SET चलता है → पूर्ण तालिका स्कैन
  • बड़े डेटासेट के लिए, सामान्यीकृत जंक्शन तालिका बेहतर है
  • MySQL 8.0+ में JSON_CONTAINS() या REGEXP विकल्प

बेहतर डिज़ाइन


            
  1. MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें MySQL में विशिष्ट कॉलम नाम वाली टेबल कैसे खोजें

    information_schema.columns टेबल को क्वेरी करके डेटाबेस में विशिष्ट कॉलम नाम वाली सभी टेबल खोजें। सिंटैक्स SELECT DISTINCT table_name FROM information_schema.columns WHERE column_name LIKE %yourSearchValue% AND table_schema = DATABASE(); उदाहरण: Client वाली कॉलम खोजना SELECT DISTINCT table_name FR

  1. - MySQL में GREATEST() से किसी भी कॉलम में NULL वाली पंक्तियाँ खोजें

    GREATEST() फ़ंक्शन अपने तर्कों में से सबसे बड़ा मान लौटाता है। यदि कोई भी तर्क NULL है, तो परिणाम NULL होता है। इस गुण का उपयोग करके किसी भी कॉलम में NULL वाली पंक्तियाँ खोज सकते हैं। टेबल बनाएं mysql> CREATE TABLE DemoTable1862 ( Value1 INT, Value2 INT, Value3 INT, Value4 INT ); डेटा डालें

  1. - MySQL में स्ट्रिंग कॉलम (स्ट्रिंग, संख्या, विशेष वर्ण) से विशिष्ट रिकॉर्ड प्राप्त करें

    CAST और SUBSTRING से संख्यात्मक भाग अनुसार क्रमबद्ध करें John_12, Chris_101 जैसे स्ट्रिंग कॉलम से संख्यात्मक भाग निकालकर क्रमबद्ध करें और विशिष्ट रिकॉर्ड प्राप्त करें। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable2006 ( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, UserCode varchar(20