在搜索等mysql中包含空格

时间:2013-06-21 06:26:10

标签: mysql sql-like

我在使用某些条件下的关键字mysql时遇到问题。我的要求是这样的。 首先,当我搜索'ABC'时,结果应该是ABCABCdef,而不是xyzABCdefxyzABC。一开始使用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 liverheart的结果,并且还必须满足前面所述的条件。有没有解决这个问题

3 个答案:

答案 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%')