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

MySQL में कॉमा-सेपरेटेड मानों के बीच विशिष्ट स्ट्रिंग कैसे खोजें?

MySQL में जब किसी कॉलम में कॉमा-सेपरेटेड मान (CSV) स्टोर होते हैं, तो उनमें किसी विशिष्ट मान को खोजने के लिए REGEXP (रेगुलर एक्सप्रेशन) का उपयोग करना सबसे प्रभावी तरीका है। यह सटीक मिलान सुनिश्चित करता है और आंशिक मिलान से बचाता है।

उदाहरण: REGEXP के साथ CSV खोज

डेमो टेबल बनाएं:

mysql> CREATE TABLE DemoTable1902 (
    Subjects TEXT
);

कॉमा-सेपरेटेड डेटा इन्सर्ट करें:

mysql> INSERT INTO DemoTable1902 VALUES
('MongoDB,Java,Python'),
('SQL Server,MySQL,PL/SQL'),
('Hibernate,Spring,JPA');

'MySQL' शब्द वाले रिकॉर्ड खोजें:

mysql> SELECT * FROM DemoTable1902 
WHERE Subjects REGEXP '(^|.*,)MySQL(,.*|$)';

आउटपुट:

+-------------------------+
| Subjects                |
+-------------------------+
| SQL Server,MySQL,PL/SQL |
+-------------------------+

रेगुलर एक्सप्रेशन समझाया

'(^|.*,)MySQL(,.*|$)' पैटर्न का अर्थ:

  • (^|.*,) - स्ट्रिंग की शुरुआत या कॉमा के बाद कोई भी वर्ण
  • MySQL - खोजा जाने वाला सटीक शब्द
  • (,.*|$) - कॉमा और कोई भी वर्ण या स्ट्रिंग का अंत

यह सुनिश्चित करता है कि 'MySQL' एक पूर्ण टोकन के रूप में मिले, न कि 'MySQLite' या 'NoMySQL' के हिस्से के रूप में।

बेहतर विकल्प: JSON या नॉर्मलाइज़्ड टेबल

उत्पादन वातावरण में, CSV स्टोर करने के बजाय:

  • JSON कॉलम (MySQL 5.7+) उपयोग करें: JSON_CONTAINS() फंक्शन के साथ
  • अलग टेबल बनाएं (नॉर्मलाइज़ेशन): एक-से-अनेक रिलेशनशिप के साथ
  • FIND_IN_SET() फंक्शन: सरल मामलों के लिए, लेकिन यह इंडेक्स का उपयोग नहीं करता

बड़े डेटासेट के लिए, नॉर्मलाइज़्ड स्कीमा या JSON कॉलम बेहतर परफॉरमेंस और रखरखाव प्रदान करते हैं।

  1. - MySQL में अल्पविराम से अलग कॉलम में उद्धरण चिह्न कैसे शामिल करें

    REPLACE और CONCAT का उपयोग करके CSV मानों को उद्धृत करना पहले टेबल बनाएं: create table DemoTable1407 ( Name text ); Query OK, 0 rows affected (0.51 sec) रिकॉर्ड डालें: insert into DemoTable1407 values(Mike,Sam,Chris); Query OK, 1 row affected (0.19 sec) सभी रिकॉर्ड देखें: select * from DemoTable1

  1. - MySQL टेबल में ^ वर्ण कैसे खोजें?

    ^ वर्ण खोजने के लिए, नीचे दिए गए सिंटैक्स में LIKE ऑपरेटर का उपयोग करें: select table_schema,table_name,column_name from information_schema.columns where column_name like %^%; आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1826 ( `^` varchar(20), Name varchar(20), `^Age` in

  1. - MySQL में कॉमा सेपरेटेड मानों के साथ रैंडम पंक्तियाँ कैसे प्राप्त करें?

    MySQL में रैंडम पंक्तियाँ प्राप्त करने के लिए ORDER BY RAND() का उपयोग किया जाता है। यदि आपके कॉलम में कॉमा सेपरेटेड मान हैं, तो आप NOT IN के साथ फ़िल्टर करके रैंडम परिणाम ले सकते हैं। टेबल बनाएं और डेटा डालें mysql> CREATE TABLE DemoTable1835 ( ListOfIds VARCHAR(20) ); mysql> INSERT INT