Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL dzieli ciąg znaków oddzielonych przecinkami na tabelę temp

To prawie to samo pytanie, co Czy Mysql może podzielić kolumnę?

MySQL nie posiada funkcji split string, więc musisz obejść ten problem. Możesz zrobić wszystko z danymi po podzieleniu ich za pomocą jednej z metod wymienionych na powyższej stronie odpowiedzi.

Możesz zapętlić tę niestandardową funkcję i przerwać, gdy zwróci puste, będziesz musiał zagrać i nauczyć się jakiejś składni (a przynajmniej ja bym to zrobił), ale składnia dla pętli FOR w mysql jest tutaj:http://www.roseindia.net/sql/mysql-example/for.shtml

Możesz go iterować, zwiększając pozycję w poniższej funkcji:

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

(Źródło:https://blog.fedecarg.com /2009/02/22/mysql-split-string-function/ )

Który powinien zwrócić '', jeśli nie zostanie znalezione dopasowanie, więc przerwij pętlę, jeśli nie zostanie znalezione dopasowanie. To pozwoli ci tylko mysql analizować podzielony ciąg i uruchamiać zapytania insert do tabeli tymczasowej. Ale człowieku, dlaczego nie używać po prostu języka skryptowego takiego jak php do tego rodzaju pracy? :(

Kod składni pętli:

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. 4 sposoby na znalezienie zduplikowanych wierszy w MySQL

  2. 4 sposoby na wyświetlenie listy wszystkich tabel w bazie danych MySQL

  3. Wstrzyknięcia SQL w ADOdb i ogólne bezpieczeństwo witryny

  4. Wskazówki dotyczące optymalizacji wydajności MySQL w celu optymalizacji bazy danych

  5. Instalacja Neo4j