zoukankan      html  css  js  c++  java
  • 06 用通配符进行过滤

    1.LIKE操作符

    通配符:用来匹配值的一部分的特殊字符。实际上是SQLWHERE子句中含有特殊含义的字符,在搜索子句中使用通配符,必须使用LIKE操作符指示DBMS,后跟的搜索模式利用通配符匹配而不是简单的相等匹配进行比较。

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

    谓词:LIKE是谓词而不是操作符。操作法作为谓词时不是操作符。

    通配符搜索只能用于文本字段(字符串),不能用于非文本数据类型字段。

    (1)百分号(%)通配符

    %表示任何字符出现任意次数,表示搜索模式中给定位置的0个、1个或多个字符,是最常用的通配符。

    输入:

    SELECT prod_id, prod_name

    FROM Products

    WHERE prod_name LIKE 'Fish%';

    输出:

    搜索模式为'Fish%',检索任意Fish开头的词。根据DBMS的不同及其配置,搜索可以区分大小写,不过这里使用的MySQL没有区分。

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

    下面使用两个位于模式两端的通配符,输入:

    SELECT prod_id, prod_name

    FROM Products

    WHERE prod_name LIKE '%bean bag%';

    输出:

    搜索模式'%bean bag%'表示匹配任何位置上包含文本bean bag的值,不管它之前或之后出现什么字符。

    通配符也可以出现在搜索模式的中间,下面找出以F开头,以y结尾的所有产品,输入:

    SELECT prod_name

    FROM Products

    WHERE prod_name LIKE 'F%y';

    输出:

    注意,通配符%不能匹配NULL。子句WHERE prod_name LIKE '%'不会匹配产品名次为NULL的行。

    (2)下划线(_)通配符

    只能匹配单个字符。

    输入:

    SELECT prod_id, prod_name

    FROM Products

    WHERE prod_name LIKE '__ inch teddy bear';

    输出:

    该搜索模式只能匹配两个通配符。下面的SELECT语句使用%通配符,返回三行产品,输入:

    SELECT prod_id, prod_name

    FROM Products

    WHERE prod_name LIKE '% inch teddy bear';

    输出:

    (3)方括号([])通配符

    用来指定一个字符集,必须匹配指定位置的一个字符。

    注意:MySQL不支持集合,因此以下检索不附上执行结果。

    为了找出所有名字以JM开头的联系人,可输入:

    SELECT cust_contact

    FROM Customers

    WHERE cust_contact LIKE '[JM]%'

    ORDER BY cust_contact;

    此通配符可以用前缀字符^(脱字号)来否定,优点是使用多个WHERE子句时可以简化语法。

    输入:

    SELECT cust_contact

    FROM Customers

    WHERE cust_contact LIKE '[^JM]%'

    ORDER BY cust_contact;

    也可以使用NOT操作符来否定,输入:

    SELECT cust_contact

    FROM Customers

    WHERE NOT cust_contact LIKE '[JM]%'

    ORDER BY cust_contact;

    2.使用通配符的技巧

    (1)不要过度使用通配符。若有操作符能达到相同目的,应该使用操作符。

    (2)确实需要通配符时,尽量不要放在搜索模式的开始处,这样搜索速度很慢。

    (3)仔细注意通配符的位置。

  • 相关阅读:
    「题解」:毛一琛/$cow$ $subsets$
    「题解」:$e$
    「题解」:$d$
    「题解」:$Simple$
    「题解」:$Game$
    「题解」:砖块
    「题解」:天才绅士少女助手克里斯蒂娜
    约瑟夫问题小结
    「题解」:[loj2763][JOI2013]现代豪宅
    20190812
  • 原文地址:https://www.cnblogs.com/Sumomo0516/p/6131521.html
Copyright © 2011-2022 走看看