Select中的Where条件
一、使用查找条件 Between
:用于测试给定的值是否在指定的范围内,是个闭区间。
注:Between查找条件常用于日期
SQL SERVER的GetDate(),获取日期和时间,该函数的时间精度为3毫秒
月日年
如:Between ‘07/01/01’ and ‘07/31/01’
等同于:07/01/01 00:00:00.000 <= T <= 07/31/01 00:00:00.000
但是这样会丢失2001年7月31日 00:00:00.000之后的所有行。
如果想根据完整的日期和时间正确地选择所有的行,必须在最后一个参数中包含当天
最后的时间。
如:Between ‘1/1/1’and ‘1/1/1 11:59:59.998 pm’
这样可查出 1/2/1 00:00:00.000的行。
SQL Server自动将指定的结束时间调整为最接近的3毫秒刻度。
同理,数据类型为SmallDateTime的列也存在这样的问题(精度为分钟)
二、使用In查找条件 in
In查找条件类似于比较运算符Equals,但查找与列表中的值匹配的内容,如果给定
的值位于列表中,比较结果将为真。
1、in查找条件相当于多个or组合在一起的Equals比较
where name in (‘Tom’,’Mike’)
相当于
where name =’Tom’ or name=’Mike’
2、可以结合使用运算符in和out来排除特定的行。
name not in (‘John’,’Timo’)
注:证明否定条件比较骓,尤其是涉及空值时。空值(null)的含义是“未知”
,而不是空字符串:‘ ’
如:
select 'in' where 'A' not in ('B',null)
因为null未知,所以SQL不能在逻辑上证明‘A’不在列表中,所以返回false,
select也就返回任何东西。
三、使用Like查询条件
%:0-n个字符
_: 1个字符
[ ]:指定范围中的字符 [abcd] [a-d]
[^ ]:非指定范围中的字符 [^1234] [^1-4]
如果要使查找包含通配符的模式(字符中的通配符不起作用,只是普通字符),可
使用下列方法
1、使用[ ]将通配符括起来
如:Like ‘%F[-]15%’
2、使用指定的转义符
如:
‘%F&-15%’ Escape ‘&’
指定了&为转义符,凡是跟着&后的字符,都被转义成普通字符。
注:使用Like运算符时,数据库排序规则指定的排序顺序决定了是否区分大小写和字符的
排序顺序。
如果需要,可以使用关键字Collate指定Like运算符使用的排序规则。
虽然Like运算符很有用,但它也会影响性能。索引基于列的开头部分,而不是中间的内容。
如果应用程序需要频繁地使用Like运算符就启用全文索引。
四、多个Where条件
and or not 组合
优先级:高------>低
五、Select ...Where语句
Select ‘10’ where 10>9
其效果类似于if 条件