SQL:如何将数据插入SET数据类型



如何将SET数据类型插入表中?

当我尝试插入SET数据(在MySQL中(时,它成功地插入了(没有警告或错误(,但我得到了一个空单元格,而不是一个由数据填充的单元格

我试过了:

INSERT INTO `individual_rate`(`user_id`, `movie_id`, `rate_code`, `rate_parts`) 
VALUES (3, 13,('1, 0, 0, 0, 0, 0'),('81, 102, 0, 102'))

也尝试过:

INSERT INTO `individual_rate`(`user_id`, `movie_id`, `rate_code`, `rate_parts`) 
VALUES (3, 13,'1, 0, 0, 0, 0, 0','81, 102, 0, 102')

它在user_idmovie_id中插入数据,但在rate_coderate_parts中没有这样做

表格结构:

CREATE TABLE `individual_rate` (
`user_id` int(11) NOT NULL,
`movie_id` int(11) NOT NULL,
`rate_code` set('n','a','f','d','s','e') COLLATE utf8_unicode_ci NOT NULL COMMENT 'rate code',
`rate_parts` set('top_f','bottom_f','top_a','bottom_a') COLLATE utf8_unicode_ci NOT NULL COMMENT 'generated parts'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

我做错了什么?

您可以使用show warnings;查看发生了什么。

以下是结果,

show warnings;
+---------+------+-------------------------------------------------+
| Level   | Code | Message                                         |
+---------+------+-------------------------------------------------+
| Warning | 1265 | Data truncated for column 'rate_code' at row 1  |
| Warning | 1265 | Data truncated for column 'rate_parts' at row 1 |
+---------+------+-------------------------------------------------+

插入语句可以是

INSERT INTO `individual_rate`(`user_id`, `movie_id`, `rate_code`, `rate_parts`)  VALUES (3, 13, 'n', 'top_f');

select * from individual_rate;
1     +---------+----------+-----------+------------+
2     | user_id | movie_id | rate_code | rate_parts |
3     +---------+----------+-----------+------------+
4     |       3 |       13 |           |            |
5     |       3 |       13 | n         | top_f      |
6     +---------+----------+-----------+------------+

在引擎盖下,它使用数字。实际上是位串中的位使用定义SET字符串

另请参阅ENUM,它还将字符串映射为数字。相反,ENUM列只能设置为其中一个选项。SET可以被指定为这些值的任意组合。

最新更新