Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में एकल कॉलम में डुप्लिकेट अल्पविराम से अलग किए गए मान को कैसे हटाएं

मैं इसी तरह की स्थिति में फंस गया और पाया कि MySQL इस समस्या को दूर करने के लिए कोई पूर्वनिर्धारित कार्य प्रदान नहीं करता है।

दूर करने के लिए मैंने एक यूडीएफ बनाया है, कृपया परिभाषा और उपयोग पर नीचे एक नज़र डालें।

DROP FUNCTION IF EXISTS `get_unique_items`;
DELIMITER //
CREATE FUNCTION `get_unique_items`(str varchar(1000)) RETURNS varchar(1000) CHARSET utf8
BEGIN

        SET @String      = str;
        SET @Occurrences = LENGTH(@String) - LENGTH(REPLACE(@String, ',', ''));
        SET @ret='';
        myloop: WHILE (@Occurrences > 0)
        DO 
            SET @myValue = SUBSTRING_INDEX(@String, ',', 1);
            IF (TRIM(@myValue) != '') THEN
                IF((LENGTH(@ret) - LENGTH(REPLACE(@ret, @myValue, '')))=0) THEN
                        SELECT CONCAT(@ret,@myValue,',') INTO @ret;
                END if;
            END IF;
            SET @Occurrences = LENGTH(@String) - LENGTH(REPLACE(@String, ',', ''));
            IF (@occurrences = 0) THEN 
                LEAVE myloop; 
            END IF;
            SET @String = SUBSTRING(@String,LENGTH(SUBSTRING_INDEX(@String, ',', 1))+2);
        END WHILE;    
SET @ret=concat(substring(@ret,1,length(@ret)-1), '');
return @ret;

END //
DELIMITER ;

नमूना उपयोग:

SELECT get_unique_items('2,2,2,22,2,3,3,3,34,34,,54,5,45,,65,6,5,,67,6,,34,34,2,3,23,2,32,,3,2,,323') AS 'Items';

परिणाम:

2,22,3,34,54,45,65,67,23,32,323

आशा है कि यह मदद!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे php . का उपयोग कर डेटाबेस से छवि प्रदर्शित करने के लिए

  2. MySQL सशर्त रूप से आईडी की श्वेतसूची के आधार पर पंक्तियों के बूलियन कॉलम मान अपडेट करें

  3. VARCHAR बनाम टेक्स्ट प्रदर्शन जब डेटा पंक्ति पर फिट बैठता है

  4. एक MySQL डेटाबेस को लैटिन से UTF-8 में बदलें

  5. MySQL:त्रुटि कोड:1118 पंक्ति का आकार बहुत बड़ा (> 8126)। कुछ कॉलम को टेक्स्ट या बीएलओबी में बदलना