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

Kích hoạt không nhận dạng bảng (Kích hoạt chia nhỏ nội dung của giá trị MỚI thành nhiều hàng để chèn vào bảng khác)

nếu bạn chỉ đang cố gắng phá vỡ các chuỗi, bạn chỉ có thể mã hóa cứng 1 và 2 trong đó như thế này và không cần lấy 1 và 2 trong bảng số vì bảng đó hiện được mã hóa cứng để chứa 1 và 2.

SET @V = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 1), ' ', -1),
    @U = SUBSTRING_INDEX(SUBSTRING_INDEX(new.Vu, ' ', 2), ' ', -1);

sqlfiddle

nhưng sau đó tôi nhận thấy bạn thậm chí không cần phải gọi SUBSTRING_INDEX () hai lần..cách này cũng hoạt động

    SET @V = SUBSTRING_INDEX(new.Vu, ' ', 1),
        @U = SUBSTRING_INDEX(new.Vu,' ', -1);

sqlfiddle

CẬP NHẬT sau khi xem nhận xét của bạn, tôi biết lý do tại sao bạn muốn tạo bảng numbers vì vậy trình kích hoạt của bạn sẽ giống như thế này. Đầu tiên bạn tạo bảng numbers chứa các hàng có n giá trị từ 1 đến 10 (số trường tối đa có thể chia thành các hàng). Sau đó, bạn chọn từ numbers trong đó n giá trị là <=số trường trong số của bạn. Sau đó, áp dụng các hàm SUBSTRING_INDEX () để nhận trường ở vị trí n.

create table numbers 
select 1 as n 
union select 2 
union select 3
union select 4
union select 5
union select 6
union select 7
union select 8
union select 9
union select 10;

CREATE TRIGGER `edit2` AFTER INSERT 
ON `table1` 
FOR EACH ROW BEGIN 

    INSERT INTO table2 (number,player,team,position)
    SELECT 
    SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.number,' ',n),' ',-1) as number,
    NEW.player as player,
    SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.team,', ',n),', ',-1) as team,
    SUBSTRING_INDEX(SUBSTRING_INDEX(NEW.position,' ',n),' ',-1) as position
    FROM
    numbers n
    WHERE LENGTH(NEW.number)
             - LENGTH(REPLACE(NEW.number,' ',''))
             + 1 >= n.n;

END

sqlfiddle để xem trình kích hoạt đang hoạt động




  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ác mối quan hệ xác định và không xác định (Một lần nữa !!!)

  2. sử dụng GROUP BY trong mysql 8

  3. Tại sao hai câu lệnh xóa + chèn đồng thời lại bị kẹt trên một bảng trống?

  4. Tìm thấy một chức năng thoát yếu cho MySql, làm thế nào để khai thác?

  5. Di chuyển từ MariaDB sang MySQL - sự khác biệt