SQL中多条件查询括号的用途
界面:

代码
where (addDate>=@beginDate or @beginDate='') and (addDate<=@endDate or @endDate='')
and (routeName like @routeName or @routeName='')
and (newProduct=1 or competitiveProducts=1 or luxury=1 or onVacation=1 or characteristic=1
or specialPreference=1 or hotRecommend=1 or overflow=1 or season=1)
and (priority=0 or priority is null)

以上语句是一个多条件查询语句,假如没有用括号分开的话,那么只有所有条件都为真才会查出数据库中所满足条件的行,但是这不是我所想要的,所以才需要用括号如:(addDate>=@beginDate or @beginDate=''),意思是当用户输入数据时,则根据addDate>=@beginDate的条件来查询数据库中满足条件的数据,如果用户不输入任何数据,那么这个时候文本框所得到的值则为:""-->空的字符串,使用@beginDate='' (变成sql语句:' '=' ' )也能使这个where子句满足条件,否则的话很难实现像这样的多条件语句查询.
在来看下这条子句:
(newProduct=1 or competitiveProducts=1 or luxury=1 or onVacation=1 or characteristic=1
or specialPreference=1 or hotRecommend=1 or overflow=1 or season=1)
这里加括号的意思是当满足前面子句所有条件的情况下并且还要满足括号内这些字段至少有一个为1的数据.
(priority=0 or priority is null)
这里加括号的意思是当满足前面子句所有条件的情况下并且还要满足括号priority=0或者priority为空的数据
如果在子句:
(priority=0 or priority is null)
中不加括号的话,那么priority前满足所有的条件下,在使用or priority is null这样就不是我们要的数据了.
这条子句加括号也是和上面子句同一个意思
(newProduct=1 or competitiveProducts=1 or luxury=1 or onVacation=1 or characteristic=1
or specialPreference=1 or hotRecommend=1 or overflow=1 or season=1)
使用括号的目的就是将一小段sql子句作为一个整体来使用.
简单的说就是在满足前面所有子句的情况下还要满足(priority=0 or priority is null)返回为ture的数据.

得到文本中输入的值调用后台数据库代码
{
gvPriority.DataKeyNames = new String[] { "id" };
gvPriority.DataSource = tts.PriorityQuery(ddlType.SelectedValue,txtBeginDate.Text,txtEndDate.Text
,txtTouristTrackName.Text,rblPriority.SelectedValue);
gvPriority.DataBind();
}


代码
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" select id,routeName,routeCharacteristic,routeIntroductions,costDetail,participate,click,routeCategory,dineMenu,weather,isEnable,addPerson,addDate,competitiveProducts,luxury,onVacation,characteristic,hotRecommend,referencesPrice,specialPreference,imgShow,imgName,imgUrl,newProduct,overflow,season,priority ");
strSql.Append(" from Tab_TouristTrack ");
strSql.Append(" where (addDate>=@beginDate or @beginDate='') and (addDate<=dateadd(dd,1,@endDate) or @endDate='')");
strSql.Append(" and (routeName like @routeName or @routeName='')");
if (MenuType != "all")
{
strSql.Append(" and "+MenuType + "=1");
}
else
{
strSql.Append(" and (newProduct=1 or competitiveProducts=1 or luxury=1 or onVacation=1 or characteristic=1");
strSql.Append(" or specialPreference=1 or hotRecommend=1 or overflow=1 or season=1)");
}
if (priority!="all")
{
if (priority=="1")
{
strSql.Append(" and priority=1");
}
else
{
strSql.Append(" and (priority=0 or priority is null)");
}
}
strSql.Append(" order by priority desc");
SqlParameter[] param = new SqlParameter[]
{
new SqlParameter("@beginDate",beginDate),
new SqlParameter("@endDate",endDate),
new SqlParameter("@routeName","%"+routeName+"%")
};
return SQLLinkDatabase.Query(strSql.ToString(),param).Tables[0];
}

</div>
<div class="postDesc">posted @ <span id="post-date">2009-12-15 13:28</span> <a href="http://www.cnblogs.com/jhxk/">唔愛吃蘋果</a> 阅读(<span id="post_view_count">8640</span>) 评论(<span id="post_comment_count">0</span>) <a href="https://i.cnblogs.com/EditArticles.aspx?postid=1624705" rel="nofollow">编辑</a> <a href="#" onclick="AddToWz(1624705);return false;">收藏</a></div>
</div>
<script type="text/javascript">var allowComments=true,cb_blogId=56600,cb_entryId=1624705,cb_blogApp=currentBlogApp,cb_blogUserGuid='7c6d27e0-7e46-de11-9510-001cf0cd104b',cb_entryCreatedDate='2009/12/15 13:28:00';loadViewCount(cb_entryId);</script>
SQL中多条件查询括号的用途的更多相关文章
- C# 将Access中时间段条件查询的数据添加到ListView中
C# 将Access中时间段条件查询的数据添加到ListView中 一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Col ...
- SQL Server多条件查询的实现
SQL Server多条件查询的实现 SQL Server多条件查询我们经常会用到,下面就教您如何使用存储过程实现SQL Server多条件查询,希望对您学习SQL Server多条件查询方面有所帮助 ...
- Hibernate中的条件查询完成类
Hibernate中的条件查询有以下三个类完成: 1.Criteria:代表一次查询 2.Criterion:代表一个查询条件 3.Restrictions:产生查询条件的工具类
- SSM-MyBatis-13:Mybatis中多条件查询
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 实体类 public class Book { private Integer bookID; private ...
- ormlite 在android中 排序 条件查询
ormlite 在android中 排序 条件查询 all = dao.queryBuilder().orderBy("Id", true).where().eq("Ty ...
- Hibernate中的条件查询完毕类
Hibernate中的条件查询有下面三个类完毕: 1.Criteria:代表一次查询 2.Criterion:代表一个查询条件 3.Restrictions:产生查询条件的工具类
- C#中使用Sql对Excel条件查询
如何在C#中实现对Excel的条件查询呢? 在使用Sql条件语句对Excel进行查询时,遇到"至少一个参数没有被指定值"的问题,如何解决? 使用OleDbConnection对象创 ...
- MyBatis中的条件查询(动态sql)
本文将介绍使用MyBatis框架,编写DAO层接口类和接口类对应的sql映射文件,使用动态sql查询满足条件的用户集合. 首先,需要创建一个实体类User,供封装数据使用: package com.x ...
- SQL中join连接查询时条件放在on后与where后的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和where条件的区别如下: 1. on条件是在生成临时表时使用的条 ...
随机推荐
- Spring Security4实例(Java config 版) —— Remember-Me
本文源码请看这里 相关文章: Spring Security4实例(Java config版)--ajax登录,自定义验证 Spring Security提供了两种remember-me的实现,一种是 ...
- 《javascript 高级程序设计》笔记
1-4章 1.变量①.ECMAScript 变量是松散类型的,也就是说可以用来保存任何类型的数据.换句话说每个变量仅仅是一个用于保存值的占位符.②.如果在函数中使用var定义一个变量,那么这个变量在函 ...
- Android_65535问题的解决
做过比较大的项目的人都知道,当app大到一定程度的时候,会出现65535这个错误,也就是64K,也就是,一个app包中,方法数不能超过65535个,超过了就要分成多个dex包,这个别问为什么,andr ...
- Ambari安装之安装并配置Ambari-server(三)
前期博客 Ambari安装之部署本地库(镜像服务器)(二) 安装并配置Ambari-server (1)检查仓库是否可用 [hadoop@ambari01 yum.repos.d]$ pwd /et ...
- RxSwift 系列(六) -- Mathematical and Aggregate Operators
前言 本篇文章将要学习RxSwift中数学和集合操作符,在RxSwift中包括了: toArray reduce concat toArray 将一个Observable序列转化为一个数组,并转换为一 ...
- iOS动画学习-视觉效果
CALayer不仅仅是iOS动画学习-CALayer中介绍的那些内容,他还有一些其他属性,比如shadowColor,borderWidth,borderColor等等,这些属性我们只需要简单点设置就 ...
- 什么是B-Tree
B-Tree就是我们常说的B树,一定不要读成B减树,否则就很丢人了.B树这种数据结构常常用于实现数据库索引,因为它的查找效率比较高. B-Tree与二叉查找树的对比 我们知道二叉查找树查询的时间复杂度 ...
- 设计模式--工厂方法模式(Factory method pattern)及应用
面向对象的好处: 通过封装,继承,多态把程序的耦合度降低. 用设计模式可以使程序更加灵活,容易修改,且易于复用. 1. 工厂方法模式 Define an interface for creating ...
- Linux系统运维工程该具备哪些素质
记得在上高中时,物理老师总是会对我们一句话:"学习是件苦差事."工作后发现,其实做运维也是件苦差事.最为一名运维工程师,深知这一行的艰辛,但和IT行业其他职务一样,那就是付出的越多 ...
- 13 年的 Bug 调试经验总结(来自蜗牛学院)
在<Learning From Your Bugs>一文中,我写了关于我是如何追踪我所遇到的一些最有趣的bug. 最近,我回顾了我所有的194个条目,看看有什么经验教训是我可以学习的.下面 ...