这是我注意到的一种奇怪的怪癖,我真的只是想看看是否有人能够提供洞察力,为什么会发生。用int查询字符串字段,返回等价的('int-%')
假设我们有一个叫做“账户”领域,这是一个VARCHAR(x)的
这两个查询将返回相同的结果集。
SELECT * FROM table WHERE account = 1234;
SELECT * FROM table WHERE account LIKE '1234%';
我在剧本我写了迁移一些较旧的数据无意中发现了这个意外,我忘了意外封装我的字符串。
谁能告诉我为什么会发生这种情况?
更新:
我觉得我可能没有解释这不够好,所以我将提供一个示例表:
表名: ID - INT 帐户 - VARCHAR( 50)
条目:
ID - account
1 - "1"
2 - "12"
3 - "123"
4 - "1234"
这样:
1:
SELECT * FROM table_name WHERE account LIKE '1%'
将返回的条目1,2,3,4
2:
SELECT * FROM table_name WHERE account = 1
将返回的条目1,2 3,4
3:
SELECT * FROM table_name WHERE account = '1'
将返回第1项
为什么1一样2,为什么是2不一样的3
+1查看.. .simple那样 – fancyPants
我明白mysql会自动转换,我更感兴趣的是LIKE语句,它似乎成为了暗示。 – Camway
我们可以澄清一点吗? 1)你期望什么行为? 2)与你观察到的有什么不同? –