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

Procedura składowana mySQL do dzielenia ciągów przez separator

Musisz zakończyć zestaw ';' i biorąc pod uwagę, że klient interpretuje; jako ogranicznik, musisz zmienić ogranicznik, aby można było wprowadzić rzeczywisty; do procedury.

mysql> delimiter //
mysql> CREATE PROCEDURE SPLIT(IN strToSplit text, IN strDelimiter varchar(1), IN nPartToGet int,OUT strSlice varchar(255))
    -> BEGIN
    -> SET strSlice = replace(substring(substring_index(strToSplit, strDelimiter,
    -> nPartToGet),     length(substring_index(strToSplit,strDelimiter, 
    -> nPartToGet - 1)) + 1), strDelimiter, '');
    -> END
    -> //
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
mysql> CALL SPLIT('1;2;3;4;5',';',3,@str);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @str;
+------+
| @str |
+------+
| 3    |
+------+
1 row in set (0.00 sec)

Odpowiednie dokumenty:http://dev.mysql.com/ doc/refman/5.0/en/stored-routines.html




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. log4net błąd logowania w logowaniu bazy danych mysql

  2. Jak w MySQL możemy stwierdzić, czy indeks tabeli jest zgrupowany, czy nie?

  3. Wstawianie danych z CSV do bazy danych MySQL jest bardzo powolne

  4. Jak dodać głos do mojej bazy danych w formularzu?

  5. Wygeneruj wiersz tabeli z wartościami <td> z DB PHP