Mysql 不易混淆的工作

Mysql 不易混淆的工作,mysql,sql,Mysql,Sql,我有一个select,带有非活动列,它是tinyint SELECT test_case.caseid AS caseid, test_case.inactive AS inactive from test_case WHERE test_case.inactive = "{inactive_value}" 如果非活动_值“0”或“1”按预期工作,但如果我写入“str”,则结果不会为空。结果将是全部,或至少是不活动的=“0” 为什么会发生这种情况 DDL相关部分: inactive tinyi

我有一个select,带有非活动列,它是tinyint

SELECT
test_case.caseid AS caseid,
test_case.inactive AS inactive
from test_case
WHERE test_case.inactive = "{inactive_value}"
如果非活动_值“0”或“1”按预期工作,但如果我写入“str”,则结果不会为空。结果将是全部,或至少是不活动的=“0”

为什么会发生这种情况

DDL相关部分:

inactive tinyint default '0' not null

请发布一些示例数据和表结构。
str
(纯字母数字)在比较之前被隐式(或其他方式)转换为
0
。如果隐式转换为0,则转换为“1”不起作用。我想得到一个空的列表,如果我用虚拟数据选择的话,在这个例子中,我得到了几乎所有的东西,这看起来有问题。表结构的相关部分:inactive tinyint默认值“0”不为null,@BenjáminGerván字符串被转换为数字。如果字符串以数字开头,它将转换为该数字。不以数字开头的字符串将转换为
0
。这有点道理,但我不满意:)谢谢你的回答