Php 使用类似mysql的

Php 使用类似mysql的,php,mysql,sql,sql-like,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%" 我必须使用John Smith

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

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%"
我必须使用
John Smith
并删除名称之间的空格。mysql查询的预期返回值为:
%JohnSmith%

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

使用该功能

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%"`
删除空白


例如:TRIM(FIRST_NAME)

这是因为您将名字和姓氏连接起来,并将其与不同的关键字匹配。您可以选择以下任何查询来执行您最初尝试执行的任何操作

在这篇文章中,我只是删除了like关键字中的空格

TRIM(COLUMN_NAME);

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

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%"

对于CONCAT之后的第一个查询,值将是
JohnSmith
,这与
%John Smith%
不同,因为中间有一个空格。正确的。我明白你的意思。如果在Where子句中使用空格不是问题,您可以尝试这样做,其中CONCAT(REPLACE(first_name,“,”),“,”,REPLACE(last_name,“,”)类似于“%John Smith%”;
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%"