这是我注意到的一种奇怪的怪癖,我真的只是想看看是否有人可以提供有关其发生原因的见解。
假设我们有一个名为“account”的字段,它是一个 varchar(x)
这两个查询将返回相同的结果集。
SELECT * FROM table WHERE account = 1234;
SELECT * FROM table WHERE account LIKE '1234%';
我在为迁移一些旧数据而编写的脚本中偶然发现了这一点,但我不小心忘记了封装我的字符串。
谁能告诉我为什么会发生这种行为?
更新:
我觉得我可能没有很好地解释这一点,所以我将提供一个示例表:
table_name: 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不一样