第六课 用通配符进行过滤

来源:互联网 发布:协方差矩阵的特征值 编辑:程序博客网 时间:2024/06/03 14:21

第六课 用通配符进行过滤

        回顾与预习:

        第五课学习了利用AND和OR操作符组合成 WHERE子句、如何明确地管理求值顺序,如何使用IN和NOT操作符;第六课介绍什么是通配符、如何使用通配符以及怎样使用LIKE操作符进行通配搜索,以便对数据进行复杂过滤。

        6.1、LIKE操作符

!!在搜索子句中使用通配符,必须使用LIKE操作符!!通配符搜索只能用于文本字段(串),非文本数据类型字段不能使用通配符搜索。!!

通配符(wildcard):用来匹配值的一部分的特殊字符;

搜索模式(search pattern):由字面值、通配符或两者组合构成的搜索条件。

谓词(predicate):操作符作为谓词时不是操作符---从技术上说,LIKE是谓词而不是操作符。

        6.1.1、百分号(%)通配符

       在搜索串中,%表示任何字符出现任意次数;

输入▼
SELECT prod_id, prod_name
           FROM Products
                     WHERE prod_name LIKE'Fish%';--- 找出所有以词Fish起头的产品

       通配符可在搜索模式中的任意位置使用,并且可以使用多个通配符;

输入▼
SELECT prod_id, prod_name
            FROM Products
                      WHERE prod_nameLIKE '%bean bag%'; ---搜索模式'%beanbag%'表示匹配任何位置上包含文本beanbag的值,不论它之前或之后出现什么字符。

%代表搜索模式中给定位置的0个、1个或多个字符。

!!NULL!!
通配符%看起来像是可以匹配任何东西,但是无法匹配NULL;子句WHERE  prod_name  LIKE  '%' 不会匹配产品名称为NULL的行。

       6.1.2下划线(_)通配符

      它只用于匹配单个字符

输入▼
SELECT prod_id, prod_name
            FROM Products
                      WHERE prod_nameLIKE '__ inch teddy bear'; __代表匹配两个通配符

        6.1.3方括号(【】)通配符

       指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符,

输入▼
SELECT cust_contact
            FROM Customers
                     WHERE cust_contactLIKE '[JM]%'
ORDER BY cust_contact;--- 找出所有名字以J或M起头的联系人:语句的WHERE子句中的模式为'[JM]%'。这一搜索模式使用了两个不同的通配符。[JM]匹配任何以方括号中字母开头的联系人名,它也只能匹配单个字符。因此,任何多于一个字符的名字都不匹配。[JM]之后的%通配符匹配第一个字符之后的任意数目的字符,返回所需结果。

前缀字符^(脱字号)来否定

输入▼
SELECT cust_contact
            FROM Customers
                      WHERE cust_contactLIKE '[^JM]%'
ORDER BY cust_contact;

       使用NOT操作符

输入▼
SELECT cust_contact
            FROM Customers
                      WHERE NOTcust_contact LIKE '[JM]%'
ORDER BY cust_contact;

原创粉丝点击