MySQL,如果value为null,则不要搜索

时间:2019-05-12 03:21:54

标签: php mysql

我有以下查询:

SELECT nfc_film.title, nfc_film.film_id, nfc_film.description, nfc_film.release_year, nfc_film.rating, nfc_film.last_update, nfc_category.name 
  FROM nfc_film
  JOIN nfc_film_category
    ON nfc_film.film_id = nfc_film_category.film_id
  JOIN nfc_category
    ON nfc_film_category.category_id = nfc_film_category.category_id
 WHERE
       nfc_film.title LIKE :searchterm
   AND
       nfc_category.name = :category
 LIMIT 10
OFFSET :page

我知道IFNULL()函数。但是说一下:category是空还是null,我将如何进行查询,就好像该条件不存在一样。

就像If :category is null then don't search in nfc_category.name

1 个答案:

答案 0 :(得分:0)

您可以更改您的WHERE条件,以包含针对category的空/空测试。如果为空或NULL,则nfc_category.name = :category的结果将是无关紧要的(应将其优化掉)。请注意,需要使用括号以避免运算符优先级问题。

(:category = '' OR :category IS NULL OR nfc_category.name = :category)

取决于您的PDO::ATTR_EMULATE_PREPARES设置,您可能需要使用其他参数名称,例如:category0:category1用于参数的第二和第三次使用。