Sur*_*til 3 mysql implicit-conversion
create table student(id int, name varchar(20));
Run Code Online (Sandbox Code Playgroud)
学生表在这里创建。*
insert into student values(20,100);
Run Code Online (Sandbox Code Playgroud)
在上面的查询中,我在name列中插入整数值 100 ,即varchar。为什么它没有给出错误或它是如何插入的?
编辑1:但是在插入字符串时是否需要给出单引号?前任。插入学生值(20,suraj); 给出错误
这对于不同的数据库有不同的处理方式。对于 MySQL,整数会为您隐式转换为 varchar,但在 SQL 中,它会产生错误。对于 MySQL,自动转换只是一些语言为了方便而具有的松散类型的一部分。
如果要强制 MySQL 进行类型检查,可以在配置文件中使用 STRICT_ALL_TABLES。您还可以通过以下方式在当前会话中设置它:
$ SET sql_mode = 'STRICT_ALL_TABLES';
Run Code Online (Sandbox Code Playgroud)
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_strict_all_tables
希望这可以帮助!
编辑 1:对于字符串文字,语言通常需要引号,以便程序知道它是字符串而不是关键字。例如,如果你的字符串是“select”,MySQL 需要知道你的意思是作为一个字符串。
| 归档时间: |
|
| 查看次数: |
1814 次 |
| 最近记录: |