Mysql 如何仅在值不为空时设置where子句
我必须编写一个查询,其中Mysql 如何仅在值不为空时设置where子句,mysql,sql,select,where-clause,Mysql,Sql,Select,Where Clause,我必须编写一个查询,其中where子句应该只在字段值不为空时才起作用,否则应该提取所有记录 我有一张桌子的名字 id | valid_month | name | ------+-------------+------| 1 | 1,2,3 | post1| 2 | 1,2 | post2| 3 | | post3| 4 | 2,5 | post4| 5 |
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;
有没有办法在MySQL中获得此输出?您可以使用逻辑
或
运算符获得此行为:
SELECT *
FROM post
WHERE valid_month = '' OR valid_month REGEXP '[[:<:]]3[[:>:]]';
选择*
邮寄
其中valid_month=''或valid_month REGEXP'[[::]]';
您也可以使用案例
SELECT *
FROM post
WHERE (
CASE WHEN IFNULL(valid_month,'') != '' THEN
valid_month REGEXP '[[:<:]]3[[:>:]]'
ELSE 1 = 1
END);
选择*
邮寄
在哪里(
如果IFNULL(有效月份“”)!=“”则为
有效的月注册表“[[::]”
否则1=1
(完),;
SELECT *
FROM post
WHERE (
CASE WHEN IFNULL(valid_month,'') != '' THEN
valid_month REGEXP '[[:<:]]3[[:>:]]'
ELSE 1 = 1
END);