MySQL 是否自动将字符串转换转换为数值?
这种转换是如何进行的?
鉴于 units.id 是 bigint 类型,该查询将如何解释?
units.id
SELECT table.* FROM table WHERE id='text'
默认情况下,MySQL 对 1 和“1”的处理方式相同,但是您可以通过将 MySQL 行为设置为严格模式来更改它。
set @@GLOBAL.sql_mode = "STRICT_ALL_TABLES"; set @@SESSION.sql_mode = "STRICT_ALL_TABLES";
或者您可以在 sql_mode = '' 中将 my.cnf 文件中的这些变量设置为永久变量。这样,如果使用了不正确的类型,MySQL 将抛出错误。 阅读 http://dev.mysql.com/doc/ refman/5.0/en/server-sql-mode.html 了解更多详细信息
sql_mode = ''
前三个问题的答案是:是、是、否。
当字符串'text'转换为数字时,它变成值0。
'text'
0
描述类型转换的文档位于此处 .
对于您的查询:
SELECT table.* FROM table WHERE id='text';
该规则是通过文档摘录捕获的:
换句话说,这实际上相当于:
WHERE id = 0.0
默认情况下,MySQL 对 1 和“1”的处理方式相同,但是您可以通过将 MySQL 行为设置为严格模式来更改它。
或者您可以在
sql_mode = ''
中将 my.cnf 文件中的这些变量设置为永久变量。这样,如果使用了不正确的类型,MySQL 将抛出错误。 阅读 http://dev.mysql.com/doc/ refman/5.0/en/server-sql-mode.html 了解更多详细信息前三个问题的答案是:是、是、否。
当字符串
'text'
转换为数字时,它变成值0
。描述类型转换的文档位于此处 .
对于您的查询:
该规则是通过文档摘录捕获的:
换句话说,这实际上相当于: