界面:
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];
}
- 推荐文章
- github 在ubuntu 使用--常用命令
- github 在ubuntu 使用--解决冲突,创建分支
- 值得看看的前端面试题
- 我理解的NODE
- Zepto常见问题
- highcharts图表配置参数汇总
- splice的多种用法
- 原生js实现选项卡
- 原生js实现倒计时
- 从手机获取图片让WebView支持本地上传图片
- Jquery设置select控件指定text的值为选中项
- sublime text 2 中文乱码解决办法
- Android中SearchView修改字体颜色
- php通过正则从字符串中获取所有图片url地址
- mysql触发器关联表更新
- android中关闭软键盘
- Android异常一、异步任务导致的窗口句柄泄漏问题(转)
- DocOptimizer 0.9.0 Beta Released
- SharePoint GroupedItemPicker Control
- ElasticSearch 环境安装
- ElasticSearch 之 Client
- Ubuntu 更新源
- ThinkPad 禁用 触摸板
- 编译OpenGL代码时发生 Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions: Assertion `needed != ((void *)0)' failed! 错误的解决方案
- python 自动认证登录
- RIDE的使用
- robotframework的分支和循环
- webdriver入门
- python字符串中的中文处理
- 带认证的页面的自动认证登录