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

MySQL में FIND_IN_SET() का उपयोग करके अल्पविराम से अलग मानों की सूची से विशिष्ट ID खोजना

MySQL में FIND_IN_SET() के साथ अल्पविराम से अलग सूची में मान खोजना

FIND_IN_SET() फ़ंक्शन अल्पविराम से अलग स्ट्रिंग सूची में किसी मान की स्थिति ढूंढता है। यह SET डेटा प्रकार या CSV स्ट्रिंग के लिए उपयोगी है।

व्यावहारिक उदाहरण

तालिका बनाना

mysql> CREATE TABLE DemoTable (
    Id VARCHAR(255)
);

अल्पविराम से अलग मान डालना

mysql> INSERT INTO DemoTable VALUES('10,100,1000');
mysql> INSERT INTO DemoTable VALUES('101,120,2');
mysql> INSERT INTO DemoTable VALUES('3,4,5');

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

mysql> SELECT * FROM DemoTable;

आउटपुट:

+-------------+
| Id          |
+-------------+
| 10,100,1000 |
| 101,120,2   |
| 3,4,5       |
+-------------+

मान '2' वाली पंक्ति खोजने के लिए क्वेरी

mysql> SELECT * FROM DemoTable 
WHERE FIND_IN_SET('2', Id);

आउटपुट:

+-----------+
| Id        |
+-----------+
| 101,120,2 |
+-----------+

FIND_IN_SET() विवरण

  • पहला तर्क: खोजने वाला मान (स्ट्रिंग)
  • दूसरा तर्क: अल्पविराम से अलग स्ट्रिंग सूची
  • लौटाता है: स्थिति (1-आधारित), नहीं मिलने पर 0
  • WHERE क्लॉज में 0 = FALSE, >0 = TRUE के रूप में काम करता है

महत्वपूर्ण सीमाएं

  • केवल अल्पविराम (,) सेपरेटर के साथ काम करता है
  • मानों में अल्पविराम नहीं होना चाहिए
  • बड़े डेटासेट पर धीमा (इंडेक्स उपयोग नहीं कर सकता)
  • सामान्यीकरण (Normalization) बेहतर डिज़ाइन है

बेहतर डिज़ाइन विकल्प


            
  1. - MySQL में MAX() और सबक्वेरी का उपयोग करके रिकॉर्ड्स से अंतिम (नवीनतम) तारीख कैसे खोजें

    सबक्वेरी के साथ MAX() का उपयोग करके नवीनतम तारीख खोजना अंतिम तारीख यानी नवीनतम तारीख प्राप्त करने के लिए, सबक्वेरी के साथ एग्रीगेट फंक्शन MAX() का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ExpiryDate DATE ); रिकॉर्ड

  1. - MySQL में VARCHAR टाइप के कॉलम से किसी विशेष तिथि के बाद का डेटा रिकॉर्ड खोजें

    VARCHAR कॉलम में संग्रहीत तिथियों को क्वेरी करना MySQL में अक्सर तिथियाँ VARCHAR कॉलम में स्टोर होती हैं। ऐसी स्थिति में तिथि तुलना के लिए STR_TO_DATE() फ़ंक्शन का उपयोग करना पड़ता है। उदाहरण: तालिका बनाना और डेटा डालना INSERT INTO DemoTable1364 VALUES(20-09-2018 13:00:00); Query OK, 1 row affecte

  1. - MySQL में VARCHAR कॉलम से अधिकतम मान कैसे प्राप्त करें

    समस्या VARCHAR कॉलम पर MAX() सीधे काम नहीं करता क्योंकि स्ट्रिंग तुलना वर्णानुक्रम में होती है। समाधान CAST() का उपयोग करके VARCHAR को UNSIGNED INTEGER में बदलें फिर MAX() लागू करें। उदाहरण INSERT INTO DemoTable2030 VALUES (8), (1), (10001), (901); क्वेरी SELECT MAX(CAST(Value AS UNSIGNED)) FRO