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

Phân tách chuỗi MySQL bằng toán tử dấu phẩy

Tôi đã có câu trả lời

Đầu tiên, hãy tạo chức năng mới

CREATE FUNCTION SPLIT_STR(x VARCHAR(255), delim VARCHAR(12), pos INT)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, '');

Sau đó, tạo thủ tục được lưu trữ

DELIMITER ;;
CREATE PROCEDURE Split(in fullstr varchar(255))
BEGIN
    DECLARE a INT Default 0 ;
    DECLARE str VARCHAR(255);

    DROP TABLE IF EXISTS my_temp_table;
    CREATE temporary TABLE my_temp_table(ID INT AUTO_INCREMENT NOT NULL, description text, primary key(ID));

    simple_loop: LOOP
        SET a=a+1;
        SET str=SPLIT_STR(fullstr,",",a);
        IF str='' THEN
            LEAVE simple_loop;
        END IF;
        #Do Inserts into temp table here with str going into the row
        insert into my_temp_table (description) values (str);
   END LOOP simple_loop;
   select * from my_temp_table;
END

Sau đó, khi tôi gọi nó bằng call Split('asas,d,sddf,dfd'); nó cung cấp cho tôi đầu ra mà tôi muốn.

Thanx cho mọi đề xuất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Điều này sẽ được lưu trữ trên trang?

  2. Chọn N * nhóm * đầu tiên bằng cách sử dụng mysql

  3. Giao dịch MySQL nguyên tử trong Anorm

  4. SQL - làm thế nào để CHỌN nhiều bảng và THAM GIA nhiều hàng từ cùng một cột?

  5. Câu lệnh MySql chuẩn bị không dính