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

MySQL में कॉमा से अलग कई आईडी वाले कॉलम में विशिष्ट पंक्ति कैसे ढूंढें? FIND_IN_SET

पंक्ति खोजने के लिए FIND_IN_SET() का उपयोग करें।

टेबल बनाएं

mysql> create table DemoTable (
    -> ListOfIds varchar(200)
    -> );
Query OK, 0 rows affected (0.72 sec)

रिकॉर्ड्स डालें

mysql> insert into DemoTable values('100,2093,678,686');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('0595,9585,4885,95959');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('0059954,95986884,9059596,9005');
Query OK, 1 row affected (0.20 sec)

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

mysql> select * from DemoTable;
+-------------------------------+
| ListOfIds                     |
+-------------------------------+
| 100,2093,678,686              |
| 0595,9585,4885,95959          |
| 0059954,95986884,9059596,9005 |
+-------------------------------+
3 rows in set (0.00 sec)

कॉमा से अलग आईडी में विशिष्ट मान खोजने का क्वेरी

mysql> select * from DemoTable where FIND_IN_SET('9005', ListOfIds);

आउटपुट:

+-------------------------------+
| ListOfIds                     |
+-------------------------------+
| 0059954,95986884,9059596,9005 |
+-------------------------------+
1 row in set (0.00 sec)

व्याख्या:

  • FIND_IN_SET(str, strlist) - strlist में str की स्थिति लौटाता है (1-आधारित)
  • यदि नहीं मिला तो 0 लौटाता है
  • WHERE FIND_IN_SET(...) सत्य मानता है यदि परिणाम > 0
  • चेतावनी: यह फ़ंक्शन इंडेक्स का उपयोग नहीं करता, बड़ी टेबल्स पर धीमा हो सकता है

बेहतर डिज़ाइन: कई मानों को एक कॉलम में संग्रहीत करने के बजाय, अलग जंक्शन टेबल का उपयोग करें (सामान्यीकरण)।

  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 में विशिष्ट पंक्ति प्राप्त करना

    WHERE, ORDER BY और LIMIT से विशिष्ट पंक्ति चुनें टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1972 ( Section char(1), StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTable1972 values(D,Chris); ... क्वेरी: C से बड़े सेक्शन को क्रमबद्ध करके पहले 2

  1. - MySQL में GROUP_CONCAT और CONCAT_WS का उपयोग करके समान ID वाले रिकॉर्ड्स को विशेष वर्ण से अलग करके संयोजित करें

    MySQL में GROUP_CONCAT और CONCAT_WS के साथ पंक्तियों को समूहित करके संयोजित करना CONCAT_WS() (विभाजक के साथ संयोजित) और GROUP_CONCAT() को मिलाकर, आप एक कॉलम द्वारा पंक्तियों को समूहित कर सकते हैं और दूसरे कॉलम के मानों को कस्टम विभाजक के साथ एक ही स्ट्रिंग में जोड़ सकते हैं। टेबल बनाना ); Query OK