色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql 將一條數據拆分

方一強2年前15瀏覽0評論

MySQL是一種自由開源的關系型數據庫管理系統,廣泛應用于Web應用程序的開發中。MySQL可以通過INSERT語句將數據插入到表中,但有時候需要將一條數據拆分成多條數據,這時候可以使用MySQL的字符串函數和存儲過程來實現。

下面我們使用一個示例表來說明如何將一條數據拆分成多條數據:

CREATE TABLE user (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
emails VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);

我們有一條數據:

INSERT INTO user (name, emails)
VALUES ('Mike', 'mike@example.com, mike1@example.com, mike2@example.com');

現在我們要將這條數據拆分成三條數據,分別插入到表中:

CREATE PROCEDURE split_emails(IN name_arg VARCHAR(100), IN emails_arg VARCHAR(255))
BEGIN
DECLARE email VARCHAR(255);
DECLARE email_start INT DEFAULT 1;
DECLARE email_end INT DEFAULT 1;
DECLARE email_count INT DEFAULT 0;
DECLARE done INT DEFAULT 0;
SET email_count = LENGTH(emails_arg) - LENGTH(REPLACE(emails_arg, ',', '')) + 1;
WHILE email_count >0 DO
SET email_end = LOCATE(',', emails_arg, email_start);
IF email_end = 0 THEN
SET email_end = LENGTH(emails_arg) + 1;
SET done = 1;
END IF;
SET email = SUBSTR(emails_arg, email_start, email_end - email_start);
SET email_start = email_end + 1;
INSERT INTO user (name, emails)
VALUES (name_arg, email);
SET email_count = email_count - 1;
IF done = 1 THEN
LEAVE;
END IF;
END WHILE;
END;

現在我們已經創建了一個存儲過程,下面我們就可以拆分數據了:

CALL split_emails('Mike', 'mike@example.com, mike1@example.com, mike2@example.com');

運行這條語句后,我們會在user表中看到三條數據,如下:

id | name | emails
---+------+-------------------
1  | Mike | mike@example.com
2  | Mike | mike1@example.com
3  | Mike | mike2@example.com

使用MySQL的字符串函數和存儲過程可以輕松地將一條數據拆分成多條數據,為開發人員提供了更多的靈活性。