sql >> Database >  >> RDS >> Mysql

MySQL Stringscheiding door komma-operator

Ik heb het antwoord

Maak eerst een nieuwe functie

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

Maak vervolgens een opgeslagen procedure

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

Daarna, wanneer ik het aanroep met call Split('asas,d,sddf,dfd'); het geeft me de output die ik wil.

Thanx voor elke suggestie.



  1. Automatisch verhogen in orakel naar reeds gemaakte tabel

  2. Waarom treedt er een fout op wanneer ik meerdere query's naar mysqli_query stuur?

  3. Hoe kan ik een vraag stellen waar de json-kolom in de laravel staat?

  4. Kunnen database-items die zijn toegevoegd uit items worden verwijderd met de knop?