sql >> Databasteknik >  >> RDS >> Mysql

MySQL-strängseparation med kommaoperator

Jag fick svaret

Skapa först ny funktion

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, '');

Skapa sedan lagrad procedur

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

Efter det när jag anropar det med call Split('asas,d,sddf,dfd'); det ger mig resultatet som jag vill ha.

Tack för alla förslag.



  1. i Php hur tar man bort emoji-kod?

  2. Utförande av rekursiva lagrade procedurer i MYSQL för att få hierarkisk data

  3. ladda upp bilder till servern under våren MVC och lagra referens i mysql databas

  4. Hur använder man flera WITH-satser i en PostgreSQL-fråga?