My SQL查询中的奇怪行为

时间:2016-06-01 08:02:01

标签: mysql comparison

Database

我有一个包含上面列的数据库。无论何时,我都尝试执行查询

"SELECT * FROM `crosswordpuzzles` WHERE `Answer` LIKE '123' "

,mysql能够返回相应的行。但是,当我执行相同的查询以查找其他2行时,

"SELECT * FROM `crosswordpuzzles` WHERE `Answer` LIKE '456' "
"SELECT * FROM `crosswordpuzzles` WHERE `Answer` LIKE '789' "

我的sql返回0结果。这些行已经通过来自以前的html表单的POST请求插入。但是,我尝试使用phpmyAdmin手动插入相同的行,它能够检测到新行。 到底发生了什么?我一直试图弄清楚,并且无法理解为什么。

2 个答案:

答案 0 :(得分:1)

试试这个。这可能会对你有帮助。

SELECT * FROM crosswordpuzzles WHERE Answer LIKE '%789%'

上述SQL语句选择包含模式" 789" {/ 1>}的Answer的所有记录。

答案 1 :(得分:0)

在寻找确切结果时,您不必使用LIKE关键字。而是尝试使用IN,如

"SELECT * FROM `crosswordpuzzles` WHERE `Answer` IN ('789','123','456') "

如果您正在搜索单个搜索,则只需使用=进行搜索,如

"SELECT * FROM `crosswordpuzzles` WHERE `Answer` = '789'"

或者可能有一些空间,所以你可以试试

"SELECT * FROM `crosswordpuzzles` WHERE TRIM(`Answer`) = '789'"
"SELECT * FROM `crosswordpuzzles` WHERE TRIM(`Answer`) = '123'"
"SELECT * FROM `crosswordpuzzles` WHERE TRIM(`Answer`) = '456'"