mysql text字段条件为0会将所有数据取出?

当然不到迫不得已尽量不要用text字段
今天突然发现 MySQL的text字段、作筛选条件的时候、如 content = 0 (int的0),会将所有数据拿出,是因为这样写被MySQL解析器优化掉了吗
测试版本:MySQL5.6

阅读 1.9k
1 个回答

参见文档中,关于类型转换处的解释。

In all other cases, the arguments are compared as floating-point (double-precision) numbers. For example, a comparison of string and numeric operands takes place as a comparison of floating-point numbers.

译:在所有其他情况下,参数被作为浮点(双精度)数字进行比较。例如,字符串和数字操作数的比较是作为浮点数的比较来进行的。

即这里会把 text 列的内容转换成浮点数然后与 0 进行比较,进而条件成立。

注:如果是以数字开头的则转换后就是开头的数字,见 示例 中的第二行就不会被查询出来。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题