在MySQL中的varchar字段中搜索整数值

在MySQL中的varchar字段中搜索整数值,mysql,search,integer,varchar,Mysql,Search,Integer,Varchar,我有一个名为user的表,如下所示: id || email --------------------------------- 1 || someone@foo.bar --------------------------------- 2 || 1manwithblueshirt@bar.foo --------------------------------- 为什么会这样: 1manwithblueshirt@bar.foo 搜索结果 SELECT * FROM user WHE

我有一个名为
user
的表,如下所示:

id || email
---------------------------------
1  || someone@foo.bar
---------------------------------
2  || 1manwithblueshirt@bar.foo
---------------------------------
为什么会这样:

1manwithblueshirt@bar.foo
搜索结果

SELECT * FROM user WHERE email = 1

因为MySQL决定将电子邮件转换为整数。规则是将前导字符转换为数字,直到这些字符不是有效的数字

下面是一个简单的例子:

select (case when '1abc' = 1 then 'a' else 'b' end)

它应该导致
NULL
,imo。但结果是电子邮件以“1”@raminious开头。因为SQL标准在历史上并不擅长说明这些东西是如何工作的。在其他数据库中,尝试将
'1abc'
转换为整数会产生错误。MySQL并没有做到这一点。@raminious可能是意外的。然而,这是Perl的行为(如果我记得的话,还有awk),它似乎并没有引起Perl死硬分子的太多心痛。