Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Разделяне на низове чрез оператор запетая

Получих отговора

Първо създайте нова функция

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

След това създайте съхранена процедура

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

След това, когато го извикам с call Split('asas,d,sddf,dfd'); това ми дава резултата, който искам.

Благодаря за всяко предложение.



  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

  2. Неизвестна грешка в колоната в този COUNT MySQL израз?

  3. Единични mysql изрази атомни ли са в MyISAM и InnoDB?

  4. MySQL автоматично увеличаване на базата на група

  5. Четене на стойности в квадратчетата за отметка с помощта на функцията implode