力扣上面一道SQL题的SQL架构如下:
Create table If Not Exists Employees(employee_id int, name varchar(20), reports_to int, age int)
Truncate table Employees
insert into Employees (employee_id, name, reports_to, age) values ('9', 'Hercy', 'None', '43')
insert into Employees (employee_id, name, reports_to, age) values ('6', 'Alice', '9', '41')
insert into Employees (employee_id, name, reports_to, age) values ('4', 'Bob', '9', '36')
insert into Employees (employee_id, name, reports_to, age) values ('2', 'Winston', 'None', '37')
它设置的employee_id,reports_to和age字段的类型都是int,为什么插入数据中写的都是字符串?
我在MySQL中直接使用这段语句建表会报错。
在MySQL中,如果表的字段类型是整数(int),插入数据时可以使用字符串或整数,但如果插入字符串,MySQL将尝试将其转换为整数。在这个例子中,虽然employee_id、reports_to和age的数据类型是int,但插入数据时使用了字符串,这会导致MySQL尝试将字符串转换为整数。如果字符串不能转换为整数,将会出现错误。因此,将插入数据中的单引号去掉即可。
以下是更正后的代码:
CREATE TABLE IF NOT EXISTS Employees (employee_id int, name varchar(20), reports_to int, age int);
TRUNCATE TABLE Employees;
INSERT INTO Employees (employee_id, name, reports_to, age) VALUES (9, 'Hercy', NULL, 43);
INSERT INTO Employees (employee_id, name, reports_to, age) VALUES (6, 'Alice', 9, 41);
INSERT INTO Employees (employee_id, name, reports_to, age) VALUES (4, 'Bob', 9, 36);
INSERT INTO Employees (employee_id, name, reports_to, age) VALUES (2, 'Winston', NULL, 37);
字符串可以自动转int,没有问题
这在任何数据库里都是一样的
leetcode写错了