sql >> Database >  >> RDS >> Mysql

Loop in trigger met door komma's gescheiden waarden mysql

Voeg eerst deze procedure toe aan uw database

http://forge.mysql.com/tools/tool.php?id =4 (bewerk 09-09-2020, de link is nu dood maar de wayback-machine heeft de bron gevonden)

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 //

Het splitst elke string in rijen in een tijdelijke tabel.

Stuur de kolom van Tabel1 naar die procedure en gebruik de resulterende tijdelijke tabel om waarden in Tabel3 in te voegen




  1. SSMS wordt nu geleverd met Azure Data Studio

  2. Mysql-bibliotheken toevoegen en koppelen in een cmakelist.txt

  3. MySQL-fout - SQLSTATE [42000]:syntaxisfout of toegangsfout:1064

  4. $variabele of $_POST-waarde invoegen in mysql-tabel