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

कॉमा से अलग MySQL कॉलम से खोज कैसे करें?

परिचय

जब किसी कॉलम में कॉमा से अलग मान (comma-separated values) स्टोर होते हैं, तो MySQL का FIND_IN_SET() फंक्शन उसमें किसी विशेष मान को खोजने के लिए सबसे उपयुक्त होता है।

उदाहरण: टेबल बनाना और डेटा डालना

mysql> CREATE TABLE DemoTable (
    -> Value VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.47 sec)
mysql> INSERT INTO DemoTable VALUES('41,14,94');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('64,84,94');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('44,74,103,104');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable VALUES('904,1004,1444,1544');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES('4,144,174');
Query OK, 1 row affected (0.15 sec)

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

mysql> SELECT * FROM DemoTable;

आउटपुट:

+--------------------+
| Value              |
+--------------------+
| 41,14,94           |
| 64,84,94           |
| 44,74,103,104      |
| 904,1004,1444,1544 |
| 4,144,174          |
+--------------------+
5 rows in set (0.00 sec)

FIND_IN_SET के साथ खोज क्वेरी

mysql> SELECT * FROM DemoTable WHERE FIND_IN_SET('4', Value);

परिणाम

+-----------+
| Value     |
+-----------+
| 4,144,174 |
+-----------+
1 row in set (0.00 sec)

व्याख्या

  • FIND_IN_SET('4', Value) - '4' को कॉमा-सूची में पूर्ण तत्व के रूप में खोजता है
  • '41', '14', '94', '104', '144' आदि में '4' नहीं मिलेगा (क्योंकि वे अलग तत्व नहीं हैं)
  • केवल '4,144,174' मेल खाता है क्योंकि '4' पहला तत्व है

FIND_IN_SET vs LIKE

फंक्शनव्यवहार
FIND_IN_SET('4', val)सटीक तत्व '4' खोजता है
val LIKE '%4%'कहीं भी '4' अक्षर खोजता है (41, 14, 104 में भी मिलेगा)

महत्वपूर्ण नोट्स

  • FIND_IN_SET केवल कॉमा (`,`) सेपरेटर के साथ काम करता है
  • खोज स्ट्रिंग में कॉमा नहीं होनी चाहिए
  • बड़े डेटासेट पर धीमा हो सकता है (इंडेक्स उपयोग नहीं कर सकता)
  • बेहतर डिज़ाइन: अलग टेबल में नॉर्मलाइज़्ड संबंध (one-to-many) उपयोग करें

FIND_IN_SET लीगेसी डेटा या सरल उपयोग के लिए ठीक है, लेकिन नए डिज़ाइन में जंक्शन टेबल बेहतर है।

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

    MySQL में कॉमा से अलग मानों वाले कॉलम में विशिष्ट मान खोजने के लिए FIND_IN_SET() फ़ंक्शन का उपयोग करें। यह CSV डेटा के लिए अनुकूलित है। सिंटैक्स FIND_IN_SET(search_string, comma_separated_column) लौटाता है: स्थिति (1-आधारित) यदि मिला, 0 यदि नहीं मिला, NULL यदि कोई तर्क NULL है। उदाहरण तालिका बनाएं

  1. - MySQL में सभी कॉलम मानों को कॉमा से अलग करके एक ही पंक्ति में प्रदर्शित करें?

    इसके लिए GROUP_CONCAT() और CONCAT() का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1807 ( Id int ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1807 values(101); Query OK, 1 row affected

  1. - MySQL में 'FROM' को कॉलम नाम कैसे बनाएं?

    चूंकि FROM एक आरक्षित शब्द है, इसे कॉलम नाम मानने के लिए बैकटिक्स प्रतीक का उपयोग करें। हम अब FROM आरक्षित शब्द को बैकटिक से घेरकर एक टेबल बनाएंगे: mysql> create table DemoTable1810 ( `from` varchar(20) ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड