我在使用某些条件下的关键字mysql时遇到问题。我的要求是这样的。
首先,当我搜索'ABC'
时,结果应该是ABC
和ABCdef
,而不是xyzABCdef
或xyzABC
。一开始使用ABC%
似乎很简单。但是当我搜索'heart%'
时,它不返回具有'liver heart'
的行,因为它只返回字符串开头有heart
的行。然后我尝试使用{{1这个返回的行有% heart%
但不是那些在字符串开头有心的行。我有点被困在这里......所以有人帮助我。
修改 在你的帮助下,我带来了以下解决方案,但仍然给我一些问题。
'liver heart'
但是此查询也会返回 SELECT q.question_id, q.question, q.date,p.fname,p.lname,p.phys_id,
p.pic_path
FROM questions q JOIN physiciansprofile p ON p.phys_id=q.phys_id
WHERE q.question LIKE 'heart%' OR question LIKE '% heart%'
AND q.question LIKE 'liver%' OR q.question LIKE '% liver%'
ORDER BY q.date DESC LIMIT 0,10;
和heart failure
。对此有任何解决方案。我需要获得包含symptoms liver
和heart
的结果,并且还必须满足前面所述的条件。有没有解决这个问题
答案 0 :(得分:4)
'%heart%'不起作用,因为你要求任何东西,空间,心脏,以及任何东西。
尝试类似:
like 'heart%' OR like '% heart%'
答案 1 :(得分:1)
怎么样
WHERE foo LIKE '% heart%' OR foo LIKE 'heart%'
答案 2 :(得分:1)
我刚看到这个旧的未解决的请求。由于有人可能有同样的问题,我会尽管请求的年龄发布答案。
WHERE q.question LIKE 'heart%' OR question LIKE '% heart%'
AND q.question LIKE 'liver%' OR q.question LIKE '% liver%'
转换为
WHERE q.question LIKE 'heart%'
OR (question LIKE '% heart%' AND q.question LIKE 'liver%')
OR q.question LIKE '% liver%'
因为AND优先于OR。
所以必须在这里使用括号。混合AND和OR时经常出现这种情况,总是这样做是个好习惯:
WHERE (q.question LIKE 'heart%' OR question LIKE '% heart%')
AND (q.question LIKE 'liver%' OR q.question LIKE '% liver%')