Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách xóa giá trị trùng lặp được phân tách bằng dấu phẩy trong một cột trong MySQL

Tôi gặp phải trường hợp tương tự và nhận thấy rằng MySql không cung cấp bất kỳ chức năng xác định trước nào để khắc phục sự cố này.

Để khắc phục, tôi đã tạo một UDF, Vui lòng xem bên dưới về cách khử nhiễu và cách sử dụng.

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 ;

Cách sử dụng mẫu:

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';

Kết quả:

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

Hy vọng sự giúp đỡ này!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL QUERY Sự cố sắp xếp kết quả

  2. Chọn tin nhắn mới nhất giữa giao tiếp của hai người dùng trong mysql

  3. MySQL length () so với char_length ()

  4. Sự kết hợp bất hợp pháp của các đối chiếu Lỗi MySQL

  5. Sử dụng SUM () mà không nhóm các kết quả