2012-09-18 28 views
-4

我想使用LIKE进行查询。WHERE(option1 || option2 || ...)LIKE'%key%'

我不知道什么正确的语法这

WHERE ((option1 || option2 || option3) LIKE '%key%') AND field = 'option4') 

谁能帮助我如何纠正呢?

我需要查询的WHERE选项1或选项2或2选项都喜欢跟键

,像条件之后,我需要另一个凡场= 3选项

注:option1,2,3。 ..是字段

+1

(选项1如'%key%'或选项2如'%key%'或选项3如'%key%')AND field ='option4'这样做会做这件事 –

回答

3

你需要的东西是这样的:

where (option1 like '%key%' or option2 like '%key%' or option3 like '%key%') 
    and field = 'option4' 
+0

是的,我做了那个,有没有办法让代码不那么久? –

+0

@IvorySantos是的 - 有更少的选择... :) – alfasin

+2

@IvorySantos:我想不出任何东西。你不应该太担心你的SQL有多长,尽可能清楚地表达你的意图,每个人(你,在六个月内阅读你的代码的人,以及数据库)都应该很开心。 –

0
WHERE CONCAT_WS(' ', option1, option2, option3) LIKE '%key%' 
    AND field = 'option4' 

' '可以是你喜欢的任何分隔符,而且也应该避免任何可能导致错误的读数与key

INDEX(field) 

可能是最好的指数。 option1等索引是无用的。

我的CONCAT可能比OR建议快一点。