仅在值不为空时如何设置where子句

时间:2018-11-26 06:10:54

标签: mysql sql select mysqli where-clause

我必须编写一个查询,其中where子句仅在字段值不为空时才起作用,否则应该提取所有记录。

我有一个表名帖子

id    | valid_month | name |
------+-------------+------|
  1   | 1,2,3       | post1|
  2   | 1,2         | post2|
  3   |             | post3|
  4   | 2,5         | post4|
  5   |             | post5|
  ----+-------------+------+

我想要查询

select * from post where IF(valid_month != "") THEN valid_month REGEXP '[[:<:]]3[[:>:]]' END IF;

结果应该喜欢

id    | valid_month | name |
------+-------------+------|
  1   | 1,2,3       | post1|
  3   |             | post3|
  5   |             | post5|
  ----+-------------+------+

有什么方法可以在MySQL中获得此输出吗?

2 个答案:

答案 0 :(得分:1)

您可以使用逻辑getActivity() .getWindow() .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 运算符获得此行为:

or

答案 1 :(得分:0)

您也可以使用CASE

SELECT *
FROM   post
WHERE (
       CASE WHEN IFNULL(valid_month,'') != '' THEN 
           valid_month REGEXP '[[:<:]]3[[:>:]]' 
       ELSE 1 = 1 
      END);