Search code examples
phpsqlsql-like

SQL - AND gets ignored after Like STATEMENT


SELECT * FROM cars WHERE carBrand LIKE '%alfa%' OR carModel LIKE '%alfa%'

Everything i put after that sentence just gets ignored. I was hoping to be able to do this.

SELECT * FROM cars
WHERE carBrand LIKE '%alfa%'
OR carModel LIKE '%alfa%' AND carType = 'truck'

This just gets ignored.

AND carType = 'truck'

Why?


Solution

  • Use parentheses

    SELECT * FROM cars 
    WHERE (carBrand LIKE '%alfa%' OR carModel LIKE '%alfa%')
    AND carType = 'truck'
    

    AND binds stronger than OR. It's called Operator Precedence. Without parentheses your query compiles to

    SELECT * FROM cars 
    WHERE carBrand LIKE '%alfa%' 
    OR (carModel LIKE '%alfa%' AND carType = 'truck')