我想使用LIKE进行查询。WHERE(option1 || option2 || ...)LIKE'%key%'
我不知道什么正确的语法这
WHERE ((option1 || option2 || option3) LIKE '%key%') AND field = 'option4')
谁能帮助我如何纠正呢?
我需要查询的WHERE选项1或选项2或2选项都喜欢跟键
,像条件之后,我需要另一个凡场= 3选项
注:option1,2,3。 ..是字段
我想使用LIKE进行查询。WHERE(option1 || option2 || ...)LIKE'%key%'
我不知道什么正确的语法这
WHERE ((option1 || option2 || option3) LIKE '%key%') AND field = 'option4')
谁能帮助我如何纠正呢?
我需要查询的WHERE选项1或选项2或2选项都喜欢跟键
,像条件之后,我需要另一个凡场= 3选项
注:option1,2,3。 ..是字段
你需要的东西是这样的:
where (option1 like '%key%' or option2 like '%key%' or option3 like '%key%')
and field = 'option4'
是的,我做了那个,有没有办法让代码不那么久? –
@IvorySantos是的 - 有更少的选择... :) – alfasin
@IvorySantos:我想不出任何东西。你不应该太担心你的SQL有多长,尽可能清楚地表达你的意图,每个人(你,在六个月内阅读你的代码的人,以及数据库)都应该很开心。 –
看看在Manual (Pattern matching)和Like Operator ,并看看this answer,一般Like操作符是如何工作的。
WHERE CONCAT_WS(' ', option1, option2, option3) LIKE '%key%'
AND field = 'option4'
的' '
可以是你喜欢的任何分隔符,而且也应该避免任何可能导致错误的读数与key
。
INDEX(field)
可能是最好的指数。 option1
等索引是无用的。
我的CONCAT
可能比OR
建议快一点。
(选项1如'%key%'或选项2如'%key%'或选项3如'%key%')AND field ='option4'这样做会做这件事 –