为什么整数数据插入'varchar'列而不给出单引号?

时间:2017-06-27 19:17:53

标签: mysql implicit-conversion

create table student(id int, name varchar(20));

这里创建的学生表。*

insert into student values(20,100);

在上面的查询中,我在 name 列中插入整数值100,即 varchar 。为什么不给出错误或插入错误?

编辑1:但是在插入字符串时,有必要给出单引号吗?            防爆。 插入学生值(20,suraj); 给出错误

1 个答案:

答案 0 :(得分:4)

对于不同的数据库,处理方式不同。对于MySQL,整数会隐式转换为varchar,但在SQL中,它会产生错误。至于MySQL,自动转换只是一些语言松散类型的一部分,以方便使用。

如果要强制MySQL进行类型检查,可以在配置文件中使用STRICT_ALL_TABLES。您也可以通过以下方式在当前会话中进行设置:

$ SET sql_mode = 'STRICT_ALL_TABLES';

https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_strict_all_tables

希望这有帮助!

编辑1:对于字符串文字,语言通常需要引号,以便程序知道它是字符串而不是关键字。例如,如果您的字符串是"选择&#34 ;, MySQL需要知道您的意思是字符串。