MySQL是否自动将字符串转换为数值?
转换是如何工作的?
既然units.id是bigint类型,那么如何解释这个查询呢?
SELECT table.*
FROM table
WHERE id='text'发布于 2014-02-13 18:29:30
你前三个问题的答案是:是的,是的,不是的。
当字符串'text'被转换为一个数字时,它就变成了值0。
描述类型转换的文档是这里。
对于您的查询:
SELECT table.*
FROM table
WHERE id='text';这个规则是从文档中摘录的:
在所有其他情况下,参数被比较为浮点数(实数).
换言之,这实际上相当于:
WHERE id = 0.0发布于 2014-02-13 18:10:53
默认情况下,MySQL对待1和'1‘是相同的,但是可以通过将MySQL行为设置为严格模式来改变这一点。
set @@GLOBAL.sql_mode = "STRICT_ALL_TABLES";
set @@SESSION.sql_mode = "STRICT_ALL_TABLES";或者,可以将my.cnf文件中的这些变量设置为sql_mode = ''中的永久变量。这样,如果使用了不正确的类型,MySQL将引发错误。有关详细信息,请阅读http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html
发布于 2014-02-13 18:10:29
与任何DBMS一样,它执行隐式转换。
对于其他类型,根据MySQL文档,您必须使用转换/强制转换函数http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html
下面是SO的一个示例:在MySQL查询中将文本转换为数字
https://stackoverflow.com/questions/21762075
复制相似问题