我的SQL查询没有从数据库中检索所有数据

时间:2015-03-02 12:28:44

标签: mysql

我的数据库中有一个名为contact的表。它包含以下列: name,mobile和twon 。问题是我正在尝试获取所有twon='Dubai',但是当我执行查询时,它只检索了81000行,但总数是130000.其余的行没有出现在我的查询中。

我的查询:

SELECT * FROM `contact` WHERE `twon` = 'Dubai'

有人能告诉我出错的地方或帮我从表中获取所有数据吗?

2 个答案:

答案 0 :(得分:2)

仅当列值完全'dubai'时,

=才会获取记录。

尝试使用LIKETRIMLOWER

SELECT * FROM `contact` WHERE LOWER(TRIM(`twon`)) LIKE '%dubai%'

如果twon列包含单词'dubai',此查询将获取记录。

答案 1 :(得分:1)

不同的事情可能是错的 如果您发布应该返回的行的示例,它将有助于我们。

  • 案例敏感度

如果区分大小写是一个问题(例如,' dubai'或' DUBAI'未退回),您可以使用LOWER功能

SELECT * FROM `contact` WHERE LOWER(`twon`) = 'dubai'
  • 额外空白

在某些情况下,列内容中的额外空格会失败,例如'迪拜'和'迪拜'。您可以使用TRIM函数来消除尾随和前导空格。

SELECT * FROM `contact` WHERE TRIM(`twon`) = 'Dubai'
  • 组合

将两者结合起来也是有效的。

SELECT * FROM `contact` WHERE LOWER(TRIM(`twon`)) = 'dubai'