我在弄清楚如何构建我的SQL查询时遇到了一些问题
说我有一个名为user_info
的表格,其中包含2个字段,firstname
和lastname
如果$name = "Bill Jones";
如何在变量名称中使用合并的firstname
和lastname
搜索表格,但在表格中分开。
另一个问题是,由于这是一种名称搜索,用户可能只在输入中键入"bill"
或只是"jones"
,因此如何将查询中的2个字段组合到运行像sql select?
由于
答案 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)
答案 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)