wherephp where多条件查询询怎么写

您所在的位置: &
教您SQL SERVER查询时间条件式写法
教您SQL SERVER查询时间条件式写法
学习SQL数据库,查询必然是重中之重,下面就将为您详细介绍SQL SERVER查询时间条件式写法,希望对您有所启迪。
查询时数据库的核心,下面就将教您SQL SERVER查询时间条件式写法,供您参考,希望对您更好学习SQL SERVER查询能够有所帮助。
tid&& tname tdate
1&&&&& 张三&&&&&&&
2&&&&& 李四&&&&&&&
3&&&&& 王五&&&&&&&
4&&&&& 陈六&&&&&&&
5&&&&& 小二&&&&&&&
下面开始做各种时间查询:注意:避免在WHERE条件式中对字段做运算,比如convert(char(10),tdate,120)
select tname from tt Where tdate='' --当时间段值为 00:00:00.000时,此条件式成立
--select tname 时间值没有 from tt Where tdate='' --时间段值为 12:04:50.000,此条件式不成立,时间值不同,这样找不到当天值
select tname 查找当天时间 from tt Where tdate between ' 00:00:00' and ' 23:59:59'
--select tname 今天的值 from tt Where tdate =getdate() --不行,因为SQL会默认当天起点是00:00:00开始,
select tname 今天的值方式一 from tt Where tdate between convert(char(10),getdate(),120) and convert(char(10),getdate(),120)+' 23:59:59'
select tname 今天的值方式二 from tt Where tdate &= convert(char(10),getdate(),120) and tdate&convert(char(10),getdate()+1,120)
--select tname from tt Where left(tdate,10)='' --
--select tname from tt Where convert(char(10),tdate,120)='' --查找当天值,可以用,但效率低
--select tname aa from tt Where convert(char(10),tdate,120)='' --查找当天值,可以用,但如果条件式后面为&&则不行.因为char(10)限定十位
--select tname 时间 from tt Where tdate Like '%' --不可用,找不到记录
--select tname 时间段 from tt Where tdate between '' and ''
查找时间段也是一样的,如:
select tname 查找号到8月26的记录 From tt Where tdate &='' and tdate&= ' 23:59:59'
以上就是SQL SERVER查询时间条件式写法。
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
MariaDB是一个向后兼容、替代MySQL的数据库服务器。它包含所有主
数据库产品
数据库综合
数据库新闻
维基百科将切换到另外一款开源数据库MariaDB
Oracle数据库的查询优化,是DBA们需要考虑的问题。在
Oracle数据库的配置工作十分复杂,不光涉及到存储数据
Infobright是一个与MySQL集成的开源数据仓库(Data Wa
去年11月至今年8月间,香港学生组织大学师生监察无良企业行动(以下简称SACOM)通过调查发现,戴尔公司位于东莞的三家代工厂严重
51CTO旗下网站您的位置: >
Linq中where查询
学习标签:
本文导读:LINQ to SQL全称基于关系数据的.NET语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能。Linq中where查询与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。
一、LINQ的基本语法包含如下的8个上下文关键字,这些关键字和具体的说明如下:
指定范围变量和数据源
根据bool表达式从数据源中筛选数据
指定查询结果中的元素所具有的类型或表现形式
对查询结果按照键值进行分组(IGrouping&TKey,TElement&)
提供一个标识符,它可以充当对join、group或select子句结果的引用
对查询出的元素进行排序(ascending/descending)
按照两个指定匹配条件来Equals连接两个数据源
产生一个用于存储查询表达式中的子表达式查询结果的范围变量
二、LINQ中where查询
where子句,它是LINQ表达式的元素筛选机制,除了开始和结束的位置,它几乎可以出现在LINQ表达式的任意位置上。
在一个LINQ表达式中,可以有where子句,也可以没有;可以有一个,也可以有多个;多个where子句之间的逻辑关系相当于逻辑&与&,每个where子句可以包含1个或多个bool逻辑表达式,这些条件成为谓词,谓词逻辑之间用的是&&&&&||&等而不是SQL中的and 、or。
Where操作包括3种形式,分别为简单形式、关系条件形式、First()形式。下面分别用实例举例下:
1.简单形式:
例如:使用where筛选在伦敦的客户
from c in db.Customers
where c.City == &London&
2.关系条件形式:
&筛选库存量在订货点水平之下但未断货的产品:
from p in db.Products
where p.UnitsInStock &= p.ReorderLevel && !p.Discontinued
下面这个例子是调用两次where以筛选出UnitPrice大于10且已停产的产品。
db.Products.Where(p=&p.UnitPrice & 10m).Where(p=&p.Discontinued);
3.First()形式:
返回集合中的一个元素,其实质就是在SQL语句中加TOP (1)。
简单用法:选择表中的第一个发货方。
Shipper shipper = db.Shippers.First();
元素:选择CustomerID 为&BONAP&的单个客户
Customer cust = db.Customers.First(c =& c.CustomerID == &BONAP&);
条件:选择运费大于 10.00 的订单:
Order ord = db.Orders.First(o =& o.Freight & 10.00M);
三、C#中对linq的应用
C# 代码 &&复制
using System.Collections.G
using System.L
using System.T
namespace LINQ_WHERE
/**//// &summary&
/// LINQ where子句
/// &/summary&
class Program
static void Main(string[] args)
//<span style="color: #常见的where语句
List&GustInfo& gList = new List&GustInfo&()
new GustInfo()...{ Name=&DebugLZQ&, Age=<span style="color: #,Tel=&<span style="color: #888888&},
new GustInfo()...{ Name=&cnblogs&,Age=<span style="color: #,Tel=&<span style="color: #6666&},
new GustInfo()...{ Name=&M&MSoft&,Age=<span style="color: #,Tel=&<span style="color: #555&}
var query = from gust in gList
where (gust.Name.Length & <span style="color: # || gust.Name.Substring(<span style="color: #, <span style="color: #) == &M&) && gust.Age & <span style="color: #
select new ...{ gust.Name, gust.Age };
foreach (var g in query)
Console.WriteLine(&{0},{1}&, g.Name, g.Age);
Console.ReadKey(false);
//<span style="color: #.在where子句中使用自定义函数
var query2 = from GustInfo gust in gList
where gust.Name.Length & <span style="color: #
&& Check(gust.Name)
foreach (var g in query2)
Console.WriteLine(&{0},{1},{2}&, g.Name, g.Age, g.Tel);
Console.ReadKey(false);
//<span style="color: #.动态谓词的筛选
//定义动态谓词数组,在实际开发中可以动态获得
string[] names = ...{ &SB&,&XXX&,&***&,&@@@&,&一些敏感词&};
var query3 = from GustInfo guest in gList
where !names.Contains(guest.Name)
foreach (var q in query3)
Console.WriteLine(&{0} 年龄:{1},电话:{2}&,q.Name,q.Age,q.Tel );
Console.ReadKey(false);
//自定义函数
static bool Check(string name)
if (name.Substring(<span style="color: #, <span style="color: #) == &N&)
return false;
return true;
程序的运行结果如下:
您可能感兴趣
一月好评排行榜多条件查询 mysql语句
多条件查询 mysql语句
12:26:00来源:
当有多个条件时sql查询语句怎么写呢?因为有时候并没有这个条件,是不是觉得一个一个if判断很麻烦呢?一般写法&?php$sql='';if($a==''){$sql.=&...&;}if($b==''){$sql.=&...&;}...?&这样做碰到的一个麻烦是,我们不知道到底条件满不满足,第一个AND出现在那里,其实我们可以这样写&?php$sql='';if($a==''){$query[]=&...&;}if($b==''){$query[]=&...&;}...if(count($query)&0){$sql.=& WHERE &.implode(& AND &,$query);}?&???有关多条件查询的问题,以前我在论坛发过帖子,前几天有网友对此感兴趣,我就花了点时间整理了一下,其实并没有什么特别的,关键在于写出正确的SQL查询语句,由于各人所用数据库不同,而SQL语句是相同的。所以在此我仅给出根据多个条件自动生成的符合要求的SQL语句。对条件的数目基本没有限制,不超过数组的组元数目就可以了。 说白了,其实就是字符串的游戏。拼拼凑凑而已。这里使用数组储存条件和查询语句,程序也不长,有详细的注释,不会化您多少功夫的。呵呵。 在conditions_search.html中输入您的查询条件,点击查询。您输入的条件在提交到display_search_SQL.php进行处理后,将给出合适的SQL语句。 /***************conditions_search.html****************/ &html& &head& &title&Conditions_Search多条件查询&/title& &/head& &body&form method=&post& action=&display_search_SQL.php&&input type=&text& &&br&&网管博客等你来搏input type=&text& &&br&input type=&text& &&br&select & &option value='' selected&all&/option& &option value='red'&red&/option& &/select&&br& &input type='submit' value='查询'& &/form& &/body& &/html& /***************conditions_search.html**********************/ /***************display_search_SQL.php*********************/ &?//从conditions_search.html接收到四个条件, //condition1,condition2,condition3,condition4。 //其中有文本框输入的字符串,有列表框下拉选择的, //这些接收条件的方式都不重要。 //条件还可以增加(没什么限制,当然也不要太大,超过数组的上限)。 //以下有几点注意: //认为条件值为空时,不限制; //要查询的表名为testtable; //condition1对应的字段名为column1……国内最早的网管论坛// $ConditionsNumber=4; //共有4个条件。(可改为实际使用的条件数) $ConditionsArray=array(&$condition1&,&$condition2&,&$condition3&,&$condition4&); //把各个条件排入一个数组中,方便下面循环。(数组很容易扩充) $SearchSQLArray=array(& where column1='$condition1'&,& where column2 like '%$condition2%'&,& where column3='$condition3'&,& where column4='$condition4'&); //预写好一些SQL语句,下面再根据情况处理。(数组很容易扩充) for($i=0;$i&$ConditionsN$i++) { if($ConditionsArray[$i]==&&) $SearchSQLArray[$i]=&&; //第一步处理:如果条件值为空,相应的SQL语句为空。 $haveWhere= //设“存在where”检查标志的初值为false。 for($j=0;$j&$i;$j++) //从开始到目前循环的i,处理有哪些where //需要变为and。 { $wherePosition=strpos($SearchSQLArray[$j],&where&); //检查i前面是否有where出现。&国内最早的网管论坛 if(($wherePosition==&1&)&&($haveWhere==false)) { $SearchSQLArray[$i]=ereg_replace(&where&,&and&,$SearchSQLArray[$i]); //where的位置为1,且前面已有where。 //则where换成and。 $haveWhere= //&存在where”检查标志设为true。 } } }; for($i=0;$i&$ConditionsN$i++) $sql=$sql.$SearchSQLArray[$i]; $sql=&select * from mytable&.$sql.&;&; //组成SQL语句 echo $sql; ?&where 子句查询(同列多条件) - ITeye问答
& ID &&&&&&&& 项目 值 上传日期
。。。。。。。。。略。。。。。。。。。。。
select fno,
max(decode(项目,'产线号',值))产线号,
max(decode(项目,'班次',值))班次,
max(decode(项目,'机型',值))机型,
max(decode(项目,'批号',值))批号
from A表 where ID=''
显示如下:
&&& ID&&&&&& 产线号&& 班次& 机型&& 批号
&&&&&& 1&&&&&& A&&& F-16&&& 3
问题:
我想同时查询符合:产线号为2,班次为A,批号为4的记录,where子句该怎么写合适。
问题补充:zengweigang 写道楼上的做法很好 但是为什么外围要加max呢?能否请楼主解答一下?
-----------------------
ID类型是VARCHAR型的,MAX针对这个类型,具体我也不是太了解,呵呵。
问题补充:qepwqnp 写道
//1行变列,查询出对应产品id属性
& select id,
& max(decode(项目,'产线号',值))产线号,
& max(decode(项目,'班次',值))班次,
& max(decode(项目,'机型',值))机型,
& max(decode(项目,'批号',值))批号
& from A表
//2 在1基础上查询符合条件的
select * from& (
select id,
& max(decode(项目,'产线号',值))产线号,
& max(decode(项目,'班次',值))班次,
& max(decode(项目,'机型',值))机型,
& max(decode(项目,'批号',值))批号
& from A表 order by id)xx where xx.产线号=2 and xx.班次=A and xx.批号=4;
-----------------------
首先感谢一下你的回答。
我刚测试了下,
使用order by出错,而用 group by是可以的。
但是好像运行效率很低,有没有优化的语句。
我的数据库有10亿条数据呢。
采纳的答案
建立临时表处理吧,那样数据量会少些
第一步
create table xx& select id,
& max(decode(项目,'产线号',值))产线号,
& max(decode(项目,'班次',值))班次,
& max(decode(项目,'机型',值))机型,
& max(decode(项目,'批号',值))批号
& from A表
第二步
select * from& xx&& where xx.产线号=2 and xx.班次=A and xx.批号=4;
这样会减少查询次数
//1行变列,查询出对应产品id属性
& select id,
& max(decode(项目,'产线号',值))产线号,
& max(decode(项目,'班次',值))班次,
& max(decode(项目,'机型',值))机型,
& max(decode(项目,'批号',值))批号
& from A表
//2 在1基础上查询符合条件的
select * from& (
select id,
& max(decode(项目,'产线号',值))产线号,
& max(decode(项目,'班次',值))班次,
& max(decode(项目,'机型',值))机型,
& max(decode(项目,'批号',值))批号
& from A表 order by id)xx where xx.产线号=2 and xx.班次=A and xx.批号=4;
楼上的做法很好 但是为什么外围要加max呢?能否请楼主解答一下?
select * from (
& select id,
& max(decode(项目,'产线号',值))产线号,
& max(decode(项目,'班次',值))班次,
& max(decode(项目,'机型',值))机型,
& max(decode(项目,'批号',值))批号
& from A表 group by id
& ) where 产线号为2,班次为A,批号为4
已解决问题
未解决问题

我要回帖

更多关于 mysql查询where条件 的文章

 

随机推荐