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

MySQL разделя низ, разделен със запетая, във времева таблица

Това е почти същият въпрос като Може ли Mysql да раздели колона?

MySQL няма функция за разделяне на низ, така че трябва да се заобиколите. Можете да правите всичко с данните, след като ги разделите, като използвате един от методите, изброени на страницата с отговори по-горе.

Можете да преминете през тази персонализирана функция и да прекъснете, когато се върне празна, ще трябва да играете и да научите някакъв синтаксис (или поне аз бих), но синтаксисът за цикъл FOR в mysql е тук:http://www.roseindia.net/sql/mysql-example/for.shtml

Можете да го повторите, като увеличите позицията във функцията по-долу:

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

(Кредит:https://blog.fedecarg.com /2009/02/22/mysql-split-string-function/ )

Което трябва да върне '', ако не е намерено съвпадение, така че прекъсвайте цикъла, ако не бъде намерено съвпадение. Това ще ви позволи само с mysql да анализирате разделения низ и да стартирате заявките за вмъкване във временна таблица. Но човече, защо просто не използвате скриптов език като php за такъв вид работа? :(

Код за синтаксис на цикъла:

DELIMITER $$  

CREATE PROCEDURE ABC(fullstr)

   BEGIN
      DECLARE a INT Default 0 ;
      DECLARE str VARCHAR(255);
      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 values (str);
   END LOOP simple_loop;
END $$


  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 с анотации на JPA

  2. SQL разделяне на стойности на няколко реда

  3. Грешка при създаването на таблица:Имате грешка във вашия SQL синтаксис близо до 'order( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id ' на ред 1

  4. Как да добавите водещи нули към число в MySQL

  5. Множество актуализации в MySQL