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

Chuỗi được phân tách bằng dấu phẩy trong MySQL thành bảng tạm thời

Đây là câu hỏi khá giống với Mysql có thể chia cột không?

MySQL không có chức năng chia chuỗi vì vậy bạn phải thực hiện các giải pháp thay thế. Bạn có thể thực hiện bất kỳ điều gì với dữ liệu sau khi chia nhỏ dữ liệu bằng một trong các phương pháp được liệt kê trên trang câu trả lời ở trên.

Bạn có thể lặp lại hàm tùy chỉnh đó và ngắt khi nó trả về trống, bạn sẽ phải chơi và học một số cú pháp (hoặc ít nhất là tôi muốn) nhưng cú pháp cho vòng lặp FOR trong mysql là ở đây: http://www.roseindia.net/sql/mysql-example/for.shtml

Bạn có thể lặp lại nó, tăng dần vị trí trong hàm bên dưới:

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');

(Tín dụng: https://blog.fedecarg.com / 2009/02/22 / mysql-split-string-function / )

Mà sẽ trả về '' nếu không tìm thấy kết quả phù hợp nào, vì vậy hãy ngắt vòng lặp nếu không tìm thấy kết quả phù hợp nào. Điều này sẽ cho phép bạn chỉ phân tích cú pháp mysql trên chuỗi phân tách và chạy các truy vấn chèn vào bảng tạm thời. Nhưng người đàn ông tại sao không chỉ sử dụng một ngôn ngữ kịch bản như php cho loại công việc đó? :(

Mã cho cú pháp vòng lặp:

DELIMITER $$  

CREATE PROCEDURE ABC(fullstr)

   BEGIN
      DECLARE a INT Default 0 ;
      DECLARE str VARCHAR(255);
      simple_loop: LOOP
         SET a=a+1;
         SET str=SPLIT_STR(fullstr,"|",a);
         IF str='' THEN
            LEAVE simple_loop;
         END IF;
         #Do Inserts into temp table here with str going into the row
         insert into my_temp_table values (str);
   END LOOP simple_loop;
END $$


  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 bao phủ so với tổng hợp và chỉ số cột

  2. Làm cách nào để xuất và nhập tệp .sql từ dòng lệnh với các tùy chọn?

  3. Tại sao việc sử dụng câu lệnh được soạn sẵn bằng mysql lại an toàn hơn so với việc sử dụng các hàm thoát thông thường?

  4. cách lấy id chèn cuối cùng sau khi chèn truy vấn trong bản ghi hoạt động codeigniter

  5. Làm cách nào để thoát ký hiệu phần trăm theo nghĩa đen khi tùy chọn NO_BACKSLASH_ESCAPES được bật?