在第一期的时候,咱们说SQL是声明式语言,当时还举了个小例子,不知道您是否还有印象:那个栗子中的SQL代码我们使用了where语句。它定义了筛选条件:成绩>=80,从而对FROM语句返回的结果集进行筛选,将不符合条件的剔除,只保留符合条件的记录。事实上,where语句的筛选条件可以是简单的单条件(如上述示例),也可以是复杂的多条件,可以是精确匹配筛选,也可以搭配通配符等进行模糊匹配筛选。
它的语法格式如下▼SELECT 字段名 FROM 表名 WHERE 筛选条件 我们还是通过几个栗子,一起了解下where语句的常用套路。 如下图所示,是一份名为学生表的Excel工作表,A列是班级,B列是姓名,C-E列分别是性别、年龄、爱好。
💡1.单条件查询倘若需要查询上述示例中班级为“插班生”的学生名单,SQL代码如下:SELECT 班级, 姓名 FROM [学生表$] WHERE 班级='插班生' 班级='插班生'就是where语句的筛选条件,它使用了等号来判断班级字段和条件值是否相等。需要说明的是,和Excel一样,当条件值是文本时,应该使用半角引号包起来,而数值则不用,例如,筛选年龄>=14的记录,代码如下:SELECT 班级, 姓名 FROM [学生表$] WHERE 年龄>=14 可能有朋友问为什么班级='插班生'使用的是单引号,而不是双引号?打个响指,这个问题我们之前有解释过,这儿再说一下。在OLE DB法使用的SQL语句里,单引号和双引号都可以。只是在VBA中,通常SQL语句本身就是作为字符串存在的,外围已经存在了一对双引号,因此SQL语句内一般就使用单引号。 没有广告的推文是不真诚的▼
💡多条件查询先说一下“与”关系(也就是并且关系)的多条件筛选。和Excel一样,在SQL中,这类问题通常使用AND运算符。比如,我们需要查找班级为插班生、同时年龄大于等于12岁的学员名单,SQL代码如下▼SELECT 班级, 姓名, 年龄 FROM [学生表$] WHERE 班级='插班生' AND 年龄>=12 如语句所示,不同条件之间使用AND运算符相连,只有当每一个条件都成立时,才符合WHERE子句的筛选条件。然后再说一下“或”关系的多条件筛选,也就是只要符合指定筛选条件中的任一条即可。 在SQL中,这类问题一般使用OR运算符处理。 比如,需要查找班级是插班生或者年龄大于等于12岁的学员名单,SQL代码如下:SELECT 班级, 姓名, 年龄 FROM [学生表$] WHERE 班级='插班生' OR 年龄>=12 当“或”关系的查询条件较少时,我们使用OR运算符,但当查询条件较多时,OR运算符的书写便变得臃肿烦琐,此时我们可以使用其它运算符代替,比如:BETWEEN和IN。IN运算符可以指定一个到多个值,每个值之间使用英文逗号间隔,最后以括号“()”包括起来。当查询值和括号中的任一值匹配时,则结果即为True。其语法格式如下:Text expression IN (First value,……,last value) 倘若我们需要查询姓名为:看见星光、老祝、美女空、大红花四个人的班级和爱好数据。SELECT 班级, 姓名, 爱好 FROM [学生表$] WHERE 姓名 IN('看见星光','老祝','美女空','大红花')
between……and语句可以选取介于两个值范围之间的数据,这些值可以是数值、日期和文本(……尽管如此,中文还是别用,原因你懂得)。例如我们需要查询年龄在13-16岁之间的学员名单。SELECT 班级, 姓名, 年龄 FROM [学生表$] WHERE 年龄 BETWEEN 13 AND 16
而反过来,如果我们需要查询年龄不在13-16岁之间的学员名单,可以使用NOT运算符搭配between。代码如下:SELECT 班级, 姓名, 年龄 FROM [学生表$] WHERE 年龄 NOT BETWEEN 13 AND 16
💡模糊匹配查询嘿!这个咱们下期再聊吧…… 嗯,官方术语是:欲知后事如何,且听下回分解……
|