I have a select query where I am trying to search strings for multiple patterns
LIKE ('%this%' or '%that%' ) and something=else
Returns zero results
However
LIKE '%this%' and something=else
returns results and
LIKE '%that%' and something=else
returns result
Is it possible to get all my results into one query? If a string matches both, how will it handle that?
Do you have something against splitting it up?
It would be nice if you could, but you can't use that syntax in SQL.
Try this:
Note the use of brackets! You need them around the
OR
expression.Without brackets, it will be parsed as
A OR (B AND C)
,which won't give you the results you expect.Try something like:
WHERE (column LIKE '%this%' OR column LIKE '%that%') AND something = else
I know it's a bit old question but still people try to find efficient solution so instead you should use FULLTEXT index (it's available from MySQL 5.6.4).
Query on table with +35mil records by triple
like
in where block took ~2.5s but after adding index on these fields and using BOOLEAN MODE insidematch ... against ...
it took only 0.05s.Have you tried:
Break out the
LIKE
clauses into 2 separate statements, i.e.: