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

Има ли нещо аналогично на метода split() в mySql?

За съжаление, mysql не позволява на функциите да връщат масиви или таблици (за които знам), така че трябва да направите това малко хакерски.

Ето примерна съхранена процедура:

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 ;

Това ще токенизира вашия низ и ще вмъкне стойностите в таблица, наречена "токени", по един токен на ред. Трябва да можете да го модифицирате, за да направите нещо полезно доста лесно. Също така може да искате да увеличите дължината на въвеждане от 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. Mysql Как се създава клъстериран индекс?

  2. Изберете от таблица, където полетата не отговарят на условията

  3. Поръчайте SQL от най-силния LIKE?

  4. Как да съхранявам ежедневни записи от mysql таблица в друга?

  5. PHP и MySQL - как да избегнем паролата в изходния код?