为什么 mysql 比较 "IN" 一样
Why mysql compare "IN" as a like
我有一个 table 具有以下数据
Table 笔交易
trasaction_id
886
456
654_asd
898_ASDF
如果我用这些句子
SELECT trasaction_id from transactions where transaction_id IN (886,654)
我希望结果是 886
,
但是 mysql 返回 886,654_ASDF
为什么在该查询中返回 654_ASDF
?
发生这种情况是因为 transaction_id
是一个字符串,但您的比较值是数字。因此,transaction_id
正在使用 "silent conversion" 转换为数字。这意味着不会报告错误。
转换并未真正使用 like
。它通过将字符串的前导字符转换为数字(如果它们看起来像数字)来继续。后续字符将被忽略。
因此,只需使用正确的类型:
SELECT trasaction_id
FROM transactions
WHERE transaction_id IN ('886', '654');
我有一个 table 具有以下数据
Table 笔交易
trasaction_id
886
456
654_asd
898_ASDF
如果我用这些句子
SELECT trasaction_id from transactions where transaction_id IN (886,654)
我希望结果是 886
,
但是 mysql 返回 886,654_ASDF
为什么在该查询中返回 654_ASDF
?
发生这种情况是因为 transaction_id
是一个字符串,但您的比较值是数字。因此,transaction_id
正在使用 "silent conversion" 转换为数字。这意味着不会报告错误。
转换并未真正使用 like
。它通过将字符串的前导字符转换为数字(如果它们看起来像数字)来继续。后续字符将被忽略。
因此,只需使用正确的类型:
SELECT trasaction_id
FROM transactions
WHERE transaction_id IN ('886', '654');