Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql тип данни или php код за увеличаване с 1 всеки път, когато страница в моята база данни се зареди в браузър

  2. Разделете низ и преминете през стойности в MySql процедура

  3. mysql параметризирана заявка в ASP.NET

  4. Трябва ли да използвам NULL или празен низ, за ​​да представя никакви данни в колоната на таблицата?

  5. MySql изберете полета, съдържащи нулеви стойности