如何将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_id
和movie_id
中插入数据,但在rate_code
和rate_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
可以被指定为这些值的任意组合。