sql >> データベース >  >> RDS >> Mysql

カンマ区切りの値を使用してトリガーをループするmysql

    まず、この手順をデータベースに追加します

    http://forge.mysql.com/tools/tool.php?id =4 (編集2020-09-09、リンクは現在無効ですが、ウェイバックマシンがソースを見つけました)

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

    文字列を一時テーブルの行に分割します。

    Table1の列をそのプロシージャに送信し、結果の一時テーブルを使用してTable3に値を挿入します




    1. SELECTとUPDATEを使用したMySQLのループを使用して、テーブルを並べ替えます

    2. Lighty for Oracle

    3. mysqldumpを使用したmysqlデータベースのバックアップ

    4. SQLiteのインストール