错误的查询与正确的结果

 风让我离开 发布于 2023-02-12 21:48

我得到了一个看起来像下面的查询.查询应查询等于的example位置的记录.比较是我所期待的.value3value = '3 value'value = 3

为什么value = '3 value'返回相同的记录value = 3

SELECT 
    *
FROM
    test.example
WHERE
    value = '3 value';

value是类型INT,我希望得到一个错误或至少是错误的结果.虽然,我得到了正确的结果(取决于你如何定义'正确')(值为3的结果).

表中的数据(id,name,value):

1   Example 1   1
2   Example 2   2
3   Example 3   3
4   Example 4   3
5   Example 5   2

Luca Rainone.. 5

来自doc

当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容.某些转换是隐式发生的.例如,MySQL会根据需要自动将数字转换为字符串,反之亦然.

然后

select "3 value" = 3

它返回1是因为

select CAST("3 value" AS SIGNED)

回报 3

1 个回答
  • 来自doc

    当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容.某些转换是隐式发生的.例如,MySQL会根据需要自动将数字转换为字符串,反之亦然.

    然后

    select "3 value" = 3
    

    它返回1是因为

    select CAST("3 value" AS SIGNED)
    

    回报 3

    2023-02-12 21:54 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有