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

MySQL प्रोसीजर में स्ट्रिंग को विभाजित करके मानों के माध्यम से लूप कैसे करें?


स्टोर्ड प्रोसीजर में लूप और SUBSTRING_INDEX का उपयोग करें

कॉमा-विभाजित स्ट्रिंग को विभाजित करने और प्रत्येक मान को एक टेबल में डालने के लिए, स्टोर्ड प्रोसीजर में LOOP, SUBSTRING_INDEX, और INSERT का उपयोग करें। REPLACE() की आवश्यकता नहीं है।

स्टोर्ड प्रोसीजर बनाना

mysql> DELIMITER //
mysql> CREATE PROCEDURE SP_SplitString(Value LONGTEXT)
BEGIN
    DECLARE front TEXT DEFAULT NULL;
    DECLARE frontlen INT DEFAULT NULL;
    DECLARE TempValue TEXT DEFAULT NULL;
    
    iterator: LOOP
        IF LENGTH(TRIM(Value)) = 0 OR Value IS NULL THEN
            LEAVE iterator;
        END IF;
        
        SET front = SUBSTRING_INDEX(Value, ',', 1);
        SET frontlen = LENGTH(front);
        SET TempValue = TRIM(front);
        
        INSERT INTO store (allValues) VALUES (TempValue);
        
        SET Value = INSERT(Value, 1, frontlen + 1, '');
    END LOOP;
END //
mysql> DELIMITER ;

स्टोरेज टेबल बनाना

mysql> CREATE TABLE store (
    Id INT NOT NULL AUTO_INCREMENT,
    allValues VARCHAR(30),
    PRIMARY KEY(Id)
);

प्रोसीजर कॉल करना

mysql> CALL SP_SplitString('Hi,Hello,Good Morning,Bye');

परिणाम: विभाजित मान टेबल में डाले गए

mysql> SELECT * FROM store;
+----+--------------+
| Id | allValues    |
+----+--------------+
|  1 | Hi           |
|  2 | Hello        |
|  3 | Good Morning |
|  4 | Bye          |
+----+--------------+

एल्गोरिदम व्याख्या

  1. SUBSTRING_INDEX(Value, ',', 1) — पहली कॉमा से पहले का भाग निकालता है।
  2. LENGTH(front) — निकाले गए भाग की लंबाई।
  3. TRIM(front) — अतिरिक्त स्पेस हटाता है।
  4. INSERT(Value, 1, frontlen + 1, '') — मूल स्ट्रिंग से पहले भाग और कॉमा को हटा देता है।
  5. लूप तब तक चलता है जब तक स्ट्रिंग खाली या NULL न हो जाए।

नोट

  • यह दृष्टिकोण सरल कॉमा-विभाजित स्ट्रिंग्स के लिए काम करता है।
  • जटिल पार्सिंग (उद्धृत स्ट्रिंग्स, एस्केप किए गए विभाजक) के लिए, एप्लिकेशन लेयर में प्रोसेस करना बेहतर है।
  • MySQL 8.0+ में JSON_TABLE() या रिकर्सिव CTE का उपयोग अधिक शक्तिशाली विकल्प हैं।
  1. - MySQL में AES_ENCRYPT() और AES_DECRYPT() से स्ट्रिंग एन्क्रिप्ट और डिक्रिप्ट करें

    सिंटैक्स insert into yourTableName values(AES_ENCRYPT(yourValue, yourSecretKey)); select cast(AES_DECRYPT(yourColumnName, yourSecretKey) as char) from yourTableName; उदाहरण insert into demo63 values(AES_ENCRYPT(John,PASS)), (AES_ENCRYPT(David,PASS)), (AES_ENCRYPT(123456,PASS)); एन्क्रिप्टेड डेटा

  1. - MySQL में FIND_IN_SET() से कॉमा-सेपरेटेड स्ट्रिंग कॉलम में मान खोजकर WHERE IN जैसा फ़िल्टर करें

    FIND_IN_SET() उपयोग 0; उदाहरण insert into demo81(username) values(John,Chris,David), (Mike,Sam), (Chris,Bob,Sam), (Mike,John,Chris); Chris खोजना 0; +----+------------------+ | id | username | +----+------------------+ | 1 | John,Chris,David | | 3 | Chris,Bob,Sam | | 4 | Mike,John

  1. - C# में स्ट्रिंग को विभाजित और जोड़ना (Split और Join)

    C# में Split() मेथड स्ट्रिंग को सबस्ट्रिंग्स की सरणी में विभाजित करता है, और Join() मेथड सरणी के तत्वों को एक स्ट्रिंग में जोड़ता है। उदाहरण: स्ट्रिंग को विभाजित और जोड़ना using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Demo { class MyApplication