gpt4 book ai didi

mysql - 与 mysql 比较的有趣结果

转载 作者:可可西里 更新时间:2023-11-01 07:58:28 27 4
gpt4 key购买 nike

我有一个表,其中一列 (mail_flag) 定义为 tinyint 值 = 0

当我设置 sql 语句时:select * from table where mail_flag = "r" 我得到所有行作为结果。其实我期待一个空的结果。有没有人解释一下?

最佳答案

如果您将一个数字(tinyint,在本例中)与一个字符进行比较,MySQL will attempt to convert the character to a number.更糟糕的是,它会在遇到的第一个非数字字符处截断字符串。在这里,由于没有数字字符,字符串被视为 0,当然,0 等于 0

为了获得合理的结果,您应该强制 MySQL 将数字转换为字符串,而不是默认转换:

SELECT *
FROM mytable
WHERE CAST(mail_flag AS CHAR(1)) = 'r'

关于mysql - 与 mysql 比较的有趣结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33091486/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com