在select查询中组合2个sql字段

时间:2014-02-27 22:01:58

标签: php mysql sql

我在弄清楚如何构建我的SQL查询时遇到了一些问题

说我有一个名为user_info的表格,其中包含2个字段,firstnamelastname

如果$name = "Bill Jones";

如何在变量名称中使用合并的firstnamelastname搜索表格,但在表格中分开。

另一个问题是,由于这是一种名称搜索,用户可能只在输入中键入"bill"或只是"jones",因此如何将查询中的2个字段组合到运行像sql select?

由于

6 个答案:

答案 0 :(得分:1)

你可以这样做:

where concat(firstname, ' ', lastname) like '%$name%'

即,连接字段并进行搜索。您可能还需要:

where concat(firstname, ' ', lastname) like '%$name%' or
      concat(lastname, ' ', firstname) like '%$name%';

答案 1 :(得分:1)

  select firstname , lastname from table where 
  concat(firstname, ' ', lastname) like '%$name%'

如果"Bill Jones""Jones Bill"不一样 然后考虑使用这个

  select firstname , lastname from table where 
  concat(firstname, ' ', lastname) like '%$name%' OR
  concat(lastname, ' ', firstname) like '%$name%'

在你的情况下使用这个

 select firstname , lastname from table where 
  concat(firstname, ' ', lastname) like CONCAT('%', ?, '%')  OR
  concat(lastname, ' ', firstname) like CONCAT('%', ?, '%') 

编辑:

 select firstname , lastname from table1 where 
 concat(firstname, ' ', lastname) like CONCAT('%', ?, '%')  OR
 concat(lastname, ' ', firstname) like CONCAT('%', ?, '%')  OR
 lastname LIKE substring_index($name, ' ',-1) OR
 firstname LIKE substring_index($name, ' ',1)

demo

答案 2 :(得分:0)

首先连接字段,然后搜索它们。

SELECT *
FROM user_info
WHERE CONCAT(firstname, lastname) LIKE '%bill%';

编辑 - 我太慢了!

答案 3 :(得分:0)

也许是这样的:

$search = explode(' ', $name);

$query = "SELECT
    *
FROM
    user_info
WHERE
    firstname LIKE '%" . $search[0] . "%'
    OR firstname LIKE '%" . $search[1] . "%'
    OR lastname LIKE '%" . $search[0] . "%'
    OR lastname LIKE '%" . $search[1] . "%'";

嗯......连续的方式似乎更优越。

答案 4 :(得分:0)

不知道这是否适合您,但您可以尝试

选择  随你 来自user_info 哪里  firstname喜欢'%Whatever%'或姓氏'%Whatever%'或Concat(名字,姓氏)喜欢'%Whatever%'

Concat可能会有所不同,具体取决于您使用Concat的数据库,至少对于mySQL。希望这会有所帮助。

答案 5 :(得分:0)

你可以explode你的$name字符串,它会创建一个包含名字和姓氏的数字索引数组。

然后,您可以使用PDO

在php中构建自己的sql select查询