Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Có điều gì đó tương tự với phương thức split () trong mySql không?

Thật không may, mysql không cho phép các hàm trả về mảng hoặc bảng (mà tôi biết), vì vậy bạn phải làm điều này một cách khó khăn.

Đây là một proc mẫu được lưu trữ:

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 ;

Điều này sẽ mã hóa chuỗi của bạn và chèn các giá trị vào một bảng được gọi là "mã thông báo", một mã thông báo trên mỗi hàng. Bạn sẽ có thể sửa đổi nó để làm điều gì đó hữu ích một cách dễ dàng. Ngoài ra, bạn có thể muốn tăng độ dài đầu vào từ 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. Cách tăng bộ đếm và trả về giá trị trong MySQL

  2. Cách tốt nhất để lưu trữ mối quan hệ nhiều-nhiều trong MySQL?

  3. MySQL INSERT SELECT - Các hàng trùng lặp

  4. Cách chuyển nhiều cột cho một biến trong php

  5. Tìm hiểu cách nhập dữ liệu Excel vào cơ sở dữ liệu MySQL