【问题标题】:Searching for an integer value in a varchar field in MySQL在 MySQL 的 varchar 字段中搜索整数值
【发布时间】:2013-02-06 23:13:15
【问题描述】:

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

id || email
---------------------------------
1  || someone@foo.bar
---------------------------------
2  || 1manwithblueshirt@bar.foo
---------------------------------

为什么会这样:

1manwithblueshirt@bar.foo

搜索结果?

SELECT * FROM user WHERE email = 1

【问题讨论】:

  • 应该是NULL,imo。
  • 但结果是电子邮件以“1”开头

标签: mysql search integer varchar


【解决方案1】:

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

这是一个简单的例子:

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

【讨论】:

  • @raminious 。 . .因为 SQL 标准在历史上并不擅长说明这些事情是如何工作的。在其他数据库中,尝试将'1abc' 转换为整数会产生错误。 MySQL 不这样做。
  • @raminious 也许是出乎意料。然而,这是 Perl 的行为(如果我记得的话,还有 awk),它似乎并没有给 Perl 的顽固分子带来太多的心痛。
猜你喜欢
  • 1970-01-01
  • 2011-03-21
  • 2013-12-27
  • 2014-08-22
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
相关资源
最近更新 更多