3

我在某些情况下使用 mysql like 关键字时遇到问题。我的要求是这样的。首先,当我搜索时'ABC',结果应该是ABCandABCdef但不是 xyzABCdef or xyzABC。起初使用起来似乎很简单ABC%。但是在我搜索的情况下'heart%',它不会返回具有的行,'liver heart'因为它只返回字符串开头的行。heart然后我尝试使用% 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 failuresymptoms liver。是否有任何解决方案。我需要得到包含两者的结果heartliver并且还必须满足前面所述的条件。有没有办法解决这个

4

3 回答 3

4

'% heart%' 不起作用,因为您要求任何东西,加上空间,加上心,再加上任何东西。

尝试类似:

like 'heart%' OR like '% heart%'
于 2013-06-21T06:31:20.520 回答
2

我刚刚看到了这个未解决的旧请求。由于有人可能有同样的问题,尽管请求的年龄,我都会发布答案。

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%')
于 2014-11-27T12:50:58.140 回答
1

关于什么

WHERE foo LIKE '% heart%' OR foo LIKE 'heart%'
于 2013-06-21T06:29:39.000 回答