使用mysql LIKE的结果不同

时间:2014-06-02 05:03:50

标签: php mysql sql sql-like

SELECT * 
FROM results
  INNER JOIN first_name USING first_name_id
  INNER JOIN last_name USING last_name_id
WHERE CONCAT (
    REPLACE(first_name, " ", ""),
    REPLACE(last_name, " ", ""))
LIKE "%John Smith%"

使用此查询时没有结果,但是当我使用它时:

SELECT * 
FROM results
  INNER JOIN first_name USING first_name_id
  INNER JOIN last_name USING last_name_id
  AND fn.first_name LIKE "%John%"
  AND last_name LIKE "%Smith%"`

我必须使用John Smith并删除名称之间的空格。 mysql查询的预期返回值为:%JohnSmith%

显示结果的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

使用功能

TRIM(COLUMN_NAME);

删除空格

例如:TRIM(FIRST_NAME)

答案 1 :(得分:0)

这是因为您正在连接名字和姓氏,并且还将其与不同的关键字匹配。您可以选择以下任何一种查询来执行您首先尝试执行的操作。

在这个中,我只是从你喜欢的关键字中删除了空格。

SELECT * 
FROM results
  INNER JOIN first_name USING first_name_id
  INNER JOIN last_name USING last_name_id
WHERE CONCAT(REPLACE(first_name, " ", ""), REPLACE(last_name, " ", "")) LIKE "%JohnSmith%"

在这篇文章中,我在first和last name列之间的concat函数中引入了一个空格。

SELECT * 
FROM results
  INNER JOIN first_name USING first_name_id
  INNER JOIN last_name USING last_name_id
WHERE CONCAT(REPLACE(first_name, " ", ""), " ", REPLACE(last_name, " ", "")) LIKE "%John Smith%"