目录
源数据表
姓名 | 年龄 | 入职日期 |
刘星星 | 36 | 1992/8/20 |
罗大吴 | 41 | 1992/9/12 |
吴宏艳 | 42 | 1993/4/21 |
陈星 | 45 | 1993/12/26 |
罗文 | 28 | 1994/1/4 |
张大亮 | 36 | 1994/3/1 |
柳香香 | 46 | 1995/5/1 |
张汶 | 46 | 1995/10/1 |
张正难 | 48 | 1997/9/1 |
朱朱 | 59 | 1997/10/20 |
吴小丽 | 57 | 1998/3/27 |
柳文明 | 30 | 1998/7/15 |
吴华 | 42 | 1998/11/1 |
柳生风 | 58 | 1999/2/10 |
陈明明 | 35 | 1999/6/4 |
黄文风 | 36 | 2000/1/5 |
梁先丽 | 34 | 2000/5/17 |
赵正云 | 30 | 2000/8/1 |
王重阳 | 43 | 2000/8/29 |
张通 | 49 | 2000/10/27 |
周星星 | 47 | 2000/12/1 |
陈正明 | 31 | 2000/12/1 |
古凤 | 34 | 2000/12/1 |
周正亮 | 32 | 2002/1/13 |
刘吴薪 | 59 | 2002/5/23 |
吴明丽 | 41 | 2002/8/25 |
朱丽丽 | 54 | 2002/11/18 |
陈昆 | 27 | 2003/8/15 |
赵香华 | 28 | 2004/6/22 |
吴芳华 | 26 | 2006/3/2 |
赵应芳 | 32 | 2006/3/7 |
吴风 | 24 | 2006/4/19 |
陈正雄 | 28 | 2007/5/28 |
朱华丽 | 34 | 2007/8/20 |
闰关 | 25 | 2007/8/20 |
周泰 | 57 | 2007/9/4 |
欧阳正雄 | 43 | 2007/9/11 |
张文 | 29 | 2007/10/19 |
吴芳芳 | 51 | 2008/5/8 |
李英 | 49 | 2008/5/29 |
赵大年 | 34 | 2009/9/1 |
赵明宝 | 28 | 2010/4/1 |
吴正明 | 40 | 2010/5/11 |
刘倩倩 | 58 | 2010/6/4 |
张傅文 | 26 | 2010/12/31 |
在许多时候,用户需要找出某一范围内的数据,而不是单纯地找出大于某个值或小于某个值的敷据。如图所示为某公司的员工名单,该表格中包括了员工姓名、年龄、入职日期等信息。在制作年末报表时,需要统计2010年加入公司的员工信息,用SQL找出这些员工。
解决方案
利用SQL的BETWEEN运算可以方便地查询字段值在某一范围内的数据。
SELECT *
FROM [sheet1$]
WHERE 入职日期 BETWEEN #2010-1-1# AND #2010-12-31#
利用BETWEEN求某范围内的数据
当要找出字段在某一范围内的数据时,可以利用BETWEEN运算符,其语法如下:
expr BETWEEN value1 AND value2
参数expr表示用于标识包含要计算的数据字段。
该表达式用于查询所有的字段值在value1和value2之间的记录(包括value1和value2)。value1、value2可以为数字或日期。采用该表达式即表示查询满足字段值大于或等于value 1
且小于或等于value2的数据。
本例中,要找出2010年加入公司的员工,即入职日期大于或等于2010年1月1日且小于2010年12月31日,可以采用BETWEEN运算符,由于是日期,必须在日期两端加上井字符号(#)。
入职日期 BETWEEN #2010-1-1# AND #2010-12-31#
一般地,value1总是小于或等于value2。当value1大于value2时,SQL查询机制将自动判断值的大小并返回介于value1和vajue2之间的值,其查询结果等同于BETWEEN value2 AND
value1。
当Value1等于Value2时,即表示范围内只有一个值,在这种情况下与使用等号运算符效果相同,即相当于
expr=value1
若要查询指定范围以外的数据,可以采用以下表达式:
expr NOT BETWEEN value1 AND value2