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

Czy istnieje coś analogicznego do metody split() w mySql?

Niestety, mysql nie pozwala funkcjom zwracać tablic lub tabel (o których wiem), więc musisz to zrobić trochę dziwacznie.

Oto przykładowa przechowywana procedura:

DELIMITER $$

create function splitter_count (str varchar(200), delim char(1)) returns int
  return (length(replace(str, delim, concat(delim, ' ')))  - length(str)) $$

CREATE PROCEDURE tokenize (str varchar(200), delim char(1))
BEGIN
  DECLARE i INT DEFAULT 0;
  create table tokens(val varchar(50));
  WHILE i <= splitter_count(str, delim) DO
    insert into tokens(val) select(substring_index(SUBSTRING_INDEX(str, delim, i+1), delim, -1));
    SET i = i + 1;
  END WHILE;

END $$

DELIMITER ;

Spowoduje to tokenizację ciągu i wstawienie wartości do tabeli o nazwie „tokeny”, po jednym tokenie w wierszu. Powinieneś być w stanie łatwo go zmodyfikować, aby zrobić coś użytecznego. Możesz także zwiększyć długość wejściową z 200.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dynamicznie wygenerować stronę HTML za pomocą PHP?

  2. Czy Python obsługuje przygotowane instrukcje MySQL?

  3. kod wyszukiwania w serwlecie do mysql?

  4. Skopiuj wiersz, ale z nowym identyfikatorem

  5. Jak pominąć wiersz podczas importowania złego zrzutu MySQL