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

MySQL में FIND_IN_SET से कॉमा-सेपरेटेड कॉलम में मान की स्थिति खोजें

FIND_IN_SET(str, strlist) फ़ंक्शन कॉमा-सेपरेटेड स्ट्रिंग सूची में किसी स्ट्रिंग की स्थिति (1-आधारित) लौटाता है। यह IN से अलग है; यह सटीक पूर्ण-तत्व मिलान करता है।

टेबल बनाएं

mysql> CREATE TABLE DemoTable1866 (
    Value1 INT,
    ListOfValues VARCHAR(100)
);

डेटा डालें

mysql> INSERT INTO DemoTable1866 VALUES(56, '78,56,98,95');
mysql> INSERT INTO DemoTable1866 VALUES(103, '103,90,102,104');
mysql> INSERT INTO DemoTable1866 VALUES(77, '34,45,77,78');

स्थिति खोजें

mysql> SELECT Value1, ListOfValues,
    FIND_IN_SET(Value1, ListOfValues) AS Output
    FROM DemoTable1866;

आउटपुट:

+--------+----------------+--------+
| Value1 | ListOfValues   | Output |
+--------+----------------+--------+
|     56 | 78,56,98,95    |      2 |
|    103 | 103,90,102,104 |      1 |
|     77 | 34,45,77,78    |      3 |
+--------+----------------+--------+

महत्वपूर्ण नियम

  • सूची में कोई स्पेस नहीं होना चाहिए: '1,2,3' ठीक, '1, 2, 3' गलत (स्पेस के कारण मेल नहीं)।
  • strlist NULL होने पर NULL लौटाता है।
  • नहीं मिलने पर 0 लौटाता है।
  • केस-इनसेंसिटिव (डिफ़ॉल्ट कोलेशन अनुसार)।

WHERE क्लॉज में उपयोग

SELECT * FROM DemoTable1866
WHERE FIND_IN_SET(Value1, ListOfValues) > 0;

चेतावनी

  • FIND_IN_SET इंडेक्स उपयोग नहीं कर सकता; बड़ी टेबल पर धीमा।
  • सामान्यीकृत डिज़ाइन (अलग टेबल) बेहतर है संबंधपरक डेटा के लिए।
  • MySQL 8.0+ में JSON_CONTAINS JSON सरणी के लिए बेहतर विकल्प।
  1. - MySQL में SUBSTRING_INDEX का उपयोग करके हाइफ़न से अलग स्ट्रिंग को कई कॉलम्स में विभाजित करें

    MySQL में SUBSTRING_INDEX का उपयोग करके विभाजक द्वारा स्ट्रिंग पार्सिंग MySQL का SUBSTRING_INDEX() फ़ंक्शन एक स्ट्रिंग को विभाजक द्वारा विभाजित करने और विशिष्ट भाग निकालने के लिए अत्यंत उपयोगी है। यह CSV-शैली डेटा या संयुक्त फ़ील्ड्स को पार्स करने के लिए आदर्श है। टेबल बनाना ); Query OK, 0 rows af

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

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

  1. - MySQL में BigQuery से समय में मिनट कैसे निकालें

    समाधान EXTRACT() और CAST() का उपयोग करके समय कॉलम से मिनट निकालें। सिंटैक्स SELECT EXTRACT(MINUTE FROM CAST(yourColumnName AS TIME)) AS aliasName FROM yourTableName; उदाहरण टेबल बनाएं: INSERT INTO demo15 VALUES (10:30:45), (06:34:55); क्वेरी SELECT EXTRACT(MINUTE FROM CAST(value AS TIME)) AS Mi