我有这样的查询:
select * from users where `firstname` like '%jack%' or `lastname` like '%Mr green%'
但是当我想找到一个名字为jack
且姓氏为Mr green
或名字为杰克先生且姓氏为绿色的人时,此代码不适用。
换句话说,我有一个文本框,用户在这个文本框中填充firstname和lastname,它们之间有一个空格,我希望在users表中搜索并找到用搜索器搜索的用户(搜索者是填充文本框的人)。
有没有办法将like
用于两列?
答案 0 :(得分:2)
(`firstname` like '%value%' or `lastname` like '%value%' or concat(firstname,' ', lastname) LIKE '%value%')
答案 1 :(得分:1)
将OR
更改为AND
:
select * from users
where `firstname` like '%jack%'
AND `lastname` like '%Mr green%'
答案 2 :(得分:0)
很难确切地说出你在问什么,但我认为你想要的是名字或姓氏匹配(但不能同时)。在那种情况下:
SELECT
*
FROM
`users`
WHERE
(
`firstname` LIKE '%jack%'
AND
`lastname` NOT LIKE '%Mr green%'
)
OR
(
`firstname` NOT LIKE '%jack%'
AND
`lastname` LIKE '%Mr green%'
)