我有一个简单的表:意外行为数由字母
Entity
ID : int
Name : varchar(10)
我被他们的ID查找实体和发现,让我感到惊讶的结果。假设存在ID = 10的实体。当我运行下面的查询,我得到如下结果:
SELECT * from Entity WHERE ID = 10 Found Entity 10 (as expected)
SELECT * from Entity WHERE ID = '10' Found Entity 10 (as expected)
SELECT * from Entity WHERE ID = A Syntax error (as expected)
SELECT * from Entity WHERE ID = 'A' Zero records found (as expected)
SELECT * from Entity WHERE ID = 10A Syntax error (as expected)
SELECT * from Entity WHERE ID = '10A' Found Entity 10 (WTF)
最后的查询似乎忽略了“A”和我好像在10这个刚刚通过评估查询是不是我所期待。
这是标准行为吗?我无法找到任何doco。
你能为此提供一个参考吗? –
这只是MySQL吗?还是应该所有RDBMS都这样做? – dave
@dave afaik它只是MySQL。如果遇到非数字,其他dbs会爆炸并输入错误。 – Bohemian