sql >> Databáze >  >> RDS >> Mysql

Existuje něco podobného metodě split() v mySql?

Bohužel mysql neumožňuje funkcím vracet pole nebo tabulky (o kterých vím), takže to musíte udělat trochu hackeři.

Zde je ukázkový uložený proces:

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 ;

Tím se váš řetězec tokenizuje a hodnoty se vloží do tabulky nazvané „tokeny“, jeden token na řádek. Měli byste být schopni jej upravit tak, aby dělal něco užitečného docela snadno. Také můžete chtít zvýšit délku vstupu z 200.



  1. více dotazů stejná tabulka, ale v různých sloupcích mysql

  2. Jak vložím datum do mysql jako parametr?

  3. Obnovte složku databáze MySQL z obnoveného pevného disku

  4. Migrace Laravel (errno:Omezení cizího klíče 150 je nesprávně vytvořeno)