我有一张表,上面有以下数据
表事务

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转换为数字。这意味着不会报告错误。
转换不是真正使用like。如果字符串的前导字符看起来像数字,则将其转换为数字。子序列字符将被忽略。
所以,只要使用正确的类型:

SELECT trasaction_id
FROM transactions
WHERE transaction_id IN ('886', '654');

10-06 11:38