多条件查询不用拼字符串的解决办法
2009-11-06 08:14
260 查看
在SQL查询语句中,有时候会传入很多参数作为where子句的条件进行查询,但不是每个参数都是必须的,可能有的参数为null,按照常规写法
select * from tbname where f1 = @f1 and f2 = @f2 and f3 = @f3
假如@f3是null,得到什么结果可想而之,为了解决这个问题,可以采取变相的解决办法,设定如果某个参数为null,就将其转变成另一个值。
在SQL语法中,有一种写法是
select * from tbname where 1 = 1
查询结果会给人以灵感,这里where子句有条件,但查询的结果跟没有条件一样,也就是说,这里的条件“形同虚设”,这样就解决了如果参数为null的问题。可以写成
select * from tbname where f1 = isnull(@f1,f1) and f2 = isnull(@f2,f2) and f3 = isnull(@f3,f3)
假如@f3为null,就会得到
select * from tbname where f1 = isnull(@f1,f1) and f2 = isnull(@f2,f2) and f3 = f3
得到的结果正是你想要的。完。
select * from tbname where f1 = @f1 and f2 = @f2 and f3 = @f3
假如@f3是null,得到什么结果可想而之,为了解决这个问题,可以采取变相的解决办法,设定如果某个参数为null,就将其转变成另一个值。
在SQL语法中,有一种写法是
select * from tbname where 1 = 1
查询结果会给人以灵感,这里where子句有条件,但查询的结果跟没有条件一样,也就是说,这里的条件“形同虚设”,这样就解决了如果参数为null的问题。可以写成
select * from tbname where f1 = isnull(@f1,f1) and f2 = isnull(@f2,f2) and f3 = isnull(@f3,f3)
假如@f3为null,就会得到
select * from tbname where f1 = isnull(@f1,f1) and f2 = isnull(@f2,f2) and f3 = f3
得到的结果正是你想要的。完。
相关文章推荐
- SSRS-查询条件为空,查询所有数据,否者查询符合条件的数据 解决办法
- SSM框架day02-MyBatis——031、033——对单表的CURD操作-复合条件查询-遗留问题及解决办法
- 客户端用plsql进行中文条件查询时无结果的解决办法
- TP3.2分页第二页带查询条件显示(两种解决办法)
- 关于oracle中无法查询中文条件的解决办法
- PLSQL显示乱码或无法进行中文条件查询解决办法
- jdbc连接数据库,查询条件为汉字,查询无结果解决办法
- php按条件查询的数据分页显示,点击下一页时又列出全部数据的解决办法
- java中sql查询条件为中文时,rs.next为false,查询不到结果的解决办法
- 小小问题集锦6之---查询条件非常复杂时解决效率不高的一个办法
- Mysql-左连接查询条件失效的解决办法
- 数据库text类型字段作为查询条件的终极解决办法
- 【小小问题集锦6之---查询条件非常复杂时解决效率不高的一个办法】
- 关于sql字符串字段的模糊查询与字符串字段里筛选部分值的记录的解决办法
- 解决mysql的in条件中参数是带引号的字符串的时候查询失效
- Jeecg中使用<t: dgCol>标签的自动构造查询条件时出现类型转换错误的解决办法。
- 解决mysql查询,in条件参数为带逗号的字符串,查询结果错误
- 客户端用plsql进行中文条件查询时无结果的解决办法
- 客户端用plsql进行中文条件查询时无结果的解决办法
- 列名的别名不可以作为查询条件的解决办法