我在弄清楚如何构造我的sql查询时遇到了一些问题
假设我有一个名为user_info
的表,有两个字段,firstname
和lastname
如果$name = "Bill Jones";
如何搜索变量名中组合了firstname
和lastname
但在表中分开的表。
另一个问题是,由于这是一种名称搜索,用户可能只在输入中键入"bill"
,或者只键入"jones"
,所以如何组合查询中的两个字段来运行类似的sql select?
谢谢
最佳答案
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