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

Vòng lặp trong trình kích hoạt với các giá trị được phân tách bằng dấu phẩy mysql

Đầu tiên hãy thêm thủ tục này vào cơ sở dữ liệu của bạn

http://forge.mysql.com/tools/tool.php?id =4 (chỉnh sửa 2020-09-09, link bây giờ đã chết nhưng máy quay lại tìm được nguồn)

DELIMITER //
 
DROP PROCEDURE IF EXISTS split_string //
CREATE PROCEDURE split_string (
    IN input TEXT
    , IN `delimiter` VARCHAR(10) 
) 
SQL SECURITY INVOKER
COMMENT 
'Splits a supplied string using using the given delimiter, 
placing values in a temporary table'
BEGIN
    DECLARE cur_position INT DEFAULT 1 ;
    DECLARE remainder TEXT;
    DECLARE cur_string VARCHAR(1000);
    DECLARE delimiter_length TINYINT UNSIGNED;
 
    DROP TEMPORARY TABLE IF EXISTS SplitValues;
    CREATE TEMPORARY TABLE SplitValues (
        value VARCHAR(1000) NOT NULL PRIMARY KEY
    ) ENGINE=MyISAM;
 
    SET remainder = input;
    SET delimiter_length = CHAR_LENGTH(delimiter);
 
    WHILE CHAR_LENGTH(remainder) > 0 AND cur_position > 0 DO
        SET cur_position = INSTR(remainder, `delimiter`);
        IF cur_position = 0 THEN
            SET cur_string = remainder;
        ELSE
            SET cur_string = LEFT(remainder, cur_position - 1);
        END IF;
        IF TRIM(cur_string) != '' THEN
            INSERT INTO SplitValues VALUES (cur_string);
        END IF;
        SET remainder = SUBSTRING(remainder, cur_position + delimiter_length);
    END WHILE;
 
END //

Nó sẽ chia bất kỳ chuỗi nào thành các hàng trong một bảng tạm thời.

Gửi cột từ Table1 vào thủ tục đó và sử dụng bảng tạm thời kết quả để chèn giá trị vào Table3




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lấy dữ liệu từ Cơ sở dữ liệu JDBC vào Jtable

  2. Cập nhật cơ sở dữ liệu SQL với giá trị hộp kiểm

  3. nhận được số lượng từ cùng một cột trong một bảng mysql?

  4. MYSQL:Hiển thị các bản ghi đã bỏ qua sau khi TẢI THÔNG TIN DỮ LIỆU?

  5. MySQL 5.6.10 InnoDB không thể tạo bảng vì bảng đã tồn tại