Mysql
 sql >> Base de données >  >> RDS >> Mysql

Existe-t-il quelque chose d'analogue à une méthode split() dans mySql ?

Malheureusement, mysql ne permet pas aux fonctions de renvoyer des tableaux ou des tables (à ma connaissance), vous devez donc le faire un peu hackly.

Voici un exemple de procédure stockée :

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 ;

Cela tokenisera votre chaîne et insérera les valeurs dans une table appelée "jetons", un jeton par ligne. Vous devriez pouvoir le modifier pour faire quelque chose d'utile assez facilement. En outre, vous pouvez augmenter la longueur d'entrée de 200.