首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL自动转换/转换字符串为数字?

问MySQL自动转换/转换字符串为数字?
EN

Stack Overflow用户
提问于 2014-02-13 18:04:51
回答 3查看 13.6K关注 0票数 12

MySQL是否自动将字符串转换为数值?

转换是如何工作的?

  • 1234=1234?
  • ‘1’=1?
  • ‘短信’=1?

既然units.id是bigint类型,那么如何解释这个查询呢?

代码语言:javascript
复制
SELECT table.* 
FROM table 
WHERE id='text'
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-13 18:29:30

你前三个问题的答案是:是的,是的,不是的。

当字符串'text'被转换为一个数字时,它就变成了值0。

描述类型转换的文档是这里。

对于您的查询:

代码语言:javascript
复制
SELECT table.* 
FROM table 
WHERE id='text';

这个规则是从文档中摘录的:

在所有其他情况下,参数被比较为浮点数(实数).

换言之,这实际上相当于:

代码语言:javascript
复制
WHERE id = 0.0
票数 13
EN

Stack Overflow用户

发布于 2014-02-13 18:10:53

默认情况下,MySQL对待1和'1‘是相同的,但是可以通过将MySQL行为设置为严格模式来改变这一点。

代码语言:javascript
复制
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

票数 5
EN

Stack Overflow用户

发布于 2014-02-13 18:10:29

与任何DBMS一样,它执行隐式转换。

对于其他类型,根据MySQL文档,您必须使用转换/强制转换函数http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

下面是SO的一个示例:在MySQL查询中将文本转换为数字

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21762075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档