mysql – 从int列查询字符串?

我有一张桌子:

CREATE TABLE `ids` (
    id int(11) not null auto_increment,
    PRIMARY KEY (id)
);

它包含一些ID:111,112,113,114等.

我提出了一个问题:

SELECT * FROM `ids` WHERE id = '112abcdefg'

我没想到,但我得到了一个结果,一行ID为112.似乎MySQL悄悄地将我的字符串转换为整数,然后将其与列值进行比较.

如何更改查询以便从id列查询相同的字符串将不会产生我期望的结果? MySQL中是否有严格的比较修饰符?

一种选择是将112转换为CHAR以获得正确的匹配:

WHERE CAST(id AS CHAR(12)) = '112abcdefg'

CHAR中的12是一个猜测;它应该足够大到你最大的身份.

这可能会杀死任何优化的机会,所以另一种选择(虽然我不是100%肯定)是使用BINARY比较.我尝试了几个不同的值,它的工作原理:

WHERE BINARY id = '112abcdefg'
相关文章
相关标签/搜索