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

MySQL में IN ऑपरेटर के लिए कॉमा-सेपरेटेड आर्गुमेंट कैसे उपयोग करें?

MySQL में FIND_IN_SET() फ़ंक्शन: कॉमा-सेपरेटेड मानों के साथ IN जैसा व्यवहार

जब आपके पास कॉमा-सेपरेटेड स्ट्रिंग हो और आप जांचना चाहें कि कोई कॉलम मान उस सूची में है या नहीं, तो FIND_IN_SET() फ़ंक्शन का उपयोग करें। यह IN ऑपरेटर का विकल्प है जो स्ट्रिंग सूची पर काम करता है।

वाक्यविन्यास

FIND_IN_SET(str, strlist)

यदि str strlist में मिलता है तो स्थिति (1-आधारित) लौटाता है, अन्यथा 0।

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

टेबल बनाना

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

रिकॉर्ड डालना

mysql> INSERT INTO DemoTable604(Title) VALUES('MySQL'), ('C++'), ('MongoDB'), ('Java');

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

mysql> SELECT * FROM DemoTable604;

आउटपुट:

+----+---------+
| Id | Title   |
+----+---------+
| 1  | MySQL   |
| 2  | C++     |
| 3  | MongoDB |
| 4  | Java    |
+----+---------+
4 rows in set (0.00 sec)

FIND_IN_SET के साथ क्वेरी

mysql> SELECT * FROM DemoTable604 
WHERE FIND_IN_SET(Title, 'C++,MongoDB');

आउटपुट:

+----+---------+
| Id | Title   |
+----+---------+
| 2  | C++     |
| 3  | MongoDB |
+----+---------+
2 rows in set (0.00 sec)

कैसे काम करता है:

  • FIND_IN_SET('C++', 'C++,MongoDB') → 1 (पहली स्थिति)
  • FIND_IN_SET('MongoDB', 'C++,MongoDB') → 2 (दूसरी स्थिति)
  • FIND_IN_SET('MySQL', 'C++,MongoDB') → 0 (नहीं मिला)
  • WHERE क्लॉज में 0 = FALSE, गैर-शून्य = TRUE

FIND_IN_SET vs IN

पहलूINFIND_IN_SET
इनपुटमान सूची या उपक्वेरीकॉमा-सेपरेटेड स्ट्रिंग
प्रदर्शनइंडेक्स उपयोग कर सकता हैइंडेक्स उपयोग नहीं कर सकता (फुल स्कैन)
डेटा टाइपकॉलम टाइप से मेल खाना चाहिएस्ट्रिंग तुलना
NULL हैंडलिंगमानक SQLNULL इनपुट पर NULL लौटाता है

सावधानियां

  • कोई इंडेक्स उपयोग नहीं: बड़े टेबल पर धीमा हो सकता है
  • सटीक मिलान: स्पेस मायने रखते हैं: 'C++, MongoDB' (स्पेस के साथ) 'C++' से मेल नहीं खाएगा
  • सेपरेटर: केवल कॉमा (,) काम करता है; अन्य सेपरेटर के लिए REPLACE() उपयोग करें

बेहतर विकल्प: JSON_CONTAINS (MySQL 5.7+)

WHERE JSON_CONTAINS('["C++", "MongoDB"]', JSON_QUOTE(Title))

या उपक्वेरी के साथ IN

WHERE Title IN (SELECT TRIM(val) FROM JSON_TABLE('["C++", "MongoDB"]', '$[*]' COLUMNS(val VARCHAR(100) PATH '$')) AS jt)
  1. - MySQL में कॉमा सेपरेटेड मानों के साथ रैंडम पंक्तियाँ कैसे प्राप्त करें?

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

  1. - MySQL में SUBSTRING और CAST से न्यूमेरिक स्ट्रिंग पर तुलना ऑपरेटर उपयोग करें

    5-9, 2-4 जैसे हाइफ़न-सेपरेटेड न्यूमेरिक स्ट्रिंग कॉलम पर तुलना करने के लिए SUBSTRING + INSTR से पहला नंबर निकालें और CAST(... AS SIGNED) से पूर्णांक में बदलें। टेबल बनाएं mysql> CREATE TABLE DemoTable1881 ( UserId INT, UserEducationGap VARCHAR(20) ); डेटा डालें mysql> INSERT INTO Dem

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

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