————讲解什么是通配符,如何使用通配符,以及怎么使用LIKE操作符进行通配操作,以便对数据进行复杂过滤

1. 概念介绍

  • 通配符(wildcard)

用来匹配值的一部分的特殊字符

  • 搜索模式(search pattern)

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

  • 谓词

操作符作为谓词时,不是操作符

2. 百分号(%)通配符

  1. SELECT prod_id, prod_name FORM Products WHERE prod_name LIKE 'Fish%'; --检索任意以Fish开头的词

说明:

  • 根据DBMS的配置,搜索可以区分大小写的
  • %可以在任何位置,开头、结尾、中间
  • WHERE prod_name LIKE ‘%’,’%’不会匹配产品名称为NULL的行

    3. 下划线(_)通配符

    “_”的用途与”%”相似,但它只匹配单个字符,而不是多个字符

    SELECT prod_id, prod_name FORM Products WHERE prod_name LIKE '__ inch teddy bear';        --检索包含“inch teddy bear”的前面有两位的行
    
  • 说明:DB2不支持_通配符

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

    SELECT cust_contact FORM Customers WHERE cust_contact LIKE '[JM]%' ORDER BY cust_contact;        --检索开头包含J或M的cust_contact,以升序排序
    
  • SQLServer支持[]

  • My SQL、Oracle、DB2、SQLite不支持[]
    SELECT cust_contact FORM Customers WHERE cust_contact LIKE '[^JM]%' ORDER BY cust_contact;        --检索开头不包含J或M的cust_contact,以升序排序
    
    SELECT cust_contact FORM Customers WHERE NOT cust_contact LIKE '[JM]%' ORDER BY cust_contact;        --检索开头包含J或M的cust_contact,以升序排序