将字符串拆分并插入为 MySQL 表中的单个值。


你可以借助 MySQL 中的预处理语句实现此功能。首先,你需要创建一个表。创建表的查询如下所示

mysql> create table University
   - > (
   - > UserId int,
   - > UniversityId int
   - > );
Query OK, 0 rows affected (0.64 sec)

首先,我们将在上述列中设置值。在这里,我们为 UserId 列设置了一个逗号分隔值的字符串。我们将拆分此字符串并插入到表中

mysql> SET @userId = '8,9,10';
Query OK, 0 rows affected (0.00 sec)
mysql> SET @UniversityId = 100;
Query OK, 0 rows affected (0.00 sec)
mysql> SET @myValues = REPLACE(@userId, ',', CONCAT(', ', @UniversityId, '),('));
Query OK, 0 rows affected (0.00 sec)
mysql> SET @myValues = CONCAT('(', @myValues, ', ', @UniversityId, ')');
Query OK, 0 rows affected (0.00 sec)
mysql> SET @insertQuery1 = CONCAT('INSERT INTO University VALUES', @myValues);
Query OK, 0 rows affected (0.00 sec)

在执行所有步骤之后,你需要执行上述 @insertQuery1。

查询如下:

mysql> PREPARE st FROM @insertQuery1;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> EXECUTE st;
Query OK, 3 rows affected (0.18 sec)
Records: 3 Duplicates: 0 Warnings: 0

现在使用 select 语句从表中显示所有记录

mysql> select *from University;

以下是显示我们已成功拆分字符串 (8, 9, 10) 并将其插入为单个值后的输出

+--------+--------------+
| UserId | UniversityId |
+--------+--------------+
|      8 |          100 |
|      9 |          100 |
|     10 |          100 |
+--------+--------------+
3 rows in set (0.00 sec)

现在取消分配预处理语句。

查询如下:

mysql> DEALLOCATE PREPARE st;
Query OK, 0 rows affected (0.00 sec)

更新于:30-Jul-2019

741 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告