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)仔细注意通配符的位置。

  • 相关阅读:
    钱多多软件制作04
    团队项目01应用场景
    HDU 4411 arrest
    HDU 4406 GPA
    HDU 3315 My Brute
    HDU 3667 Transportation
    HDU 2676 Matrix
    欧拉回路三水题 POJ 1041 POJ 2230 POJ 1386
    SPOJ 371 BOXES
    POJ 3422 Kaka's Matrix Travels
  • 原文地址:https://www.cnblogs.com/Sumomo0516/p/6131521.html
Copyright © 2011-2022 走看看