SQL语句当查询条件为空时默认查询全部数据,不为空是则按照条件进行查询
最近做web的时候遇到一个问题,在对列表数据进行查询时,会有多个查询条件,有些查询条件有数据,有些查询条件则为空,某个查询条件为空时则要默认查询此字段下的全部数据,这样的SQL查询语句该怎么写呢?在网上找了找,发现了这样的写法:select * from 表 where (字段=条件 or 条件='')
最近做web的时候遇到一个问题,在对列表数据进行查询时,会有多个查询条件,有些查询条件有数据,有些查询条件则为空,某个查询条件为空时则要默认查询此字段下的全部数据,这样的SQL查询语句该怎么写呢?以下介绍两种写法。
1. 朴素的写法:
select * from 表 where (字段=条件 or 条件='')
这条SQL语句的意思就是当条件不为空时SQL语句等价于:select * from 表 where 字段=条件;
当条件为空时SQL语句等价于:select * from 表 where ''='';
这样就实现了当查询条件为空时默认查询全部数据,当查询结果非空时则查询对应的数据。
下面是一个简单的例子:
这是一张简单的学生信息表,假设查询时允许输入的条件有两个,分别是sex和math,假设用户只输入的sex的值’F’,并没有输入math对应的值,那么就应该对表中sex的值为’F’的数据进行查询,因为math输入的值为空,则默认查询math等于任何值的数据,则SQL语句的编写应该如下:
SET @sex='F';
SET @math='';
SELECT * FROM student_test WHERE (sex=@sex OR @sex='') AND (math=@math OR @math='');
查询的结果:
2. 运用sql的like关键字实现模糊查询功能
实现上述查询功能的SQL语句用like关键字实现:
SELECT * FROM student_test WHERE (字段 LIKE '%条件%');
其中“%”表示可以为任意字符,这句SQL语句也不难理解,这样一样可以处理条件为空的情况。
依旧是处理上面的例子,以下是运用like关键字的SQL语句:
SELECT * FROM student_test WHERE (sex LIKE '%F%') AND (math LIKE '%%');
查询的结果:
这样就实现了当查询条件为空时默认查询全部数据,不为空是则按照条件进行查询。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)