zoukankan      html  css  js  c++  java
  • 读书笔记--SQL必知必会06--用通配符进行过滤

    6.1 LIKE操作符

    通配符(wildcard),用来匹配某些值的的特殊字符。

    • 在搜索子句中必须通过LIKE操作符使用通配符。
    • 通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜索。
    • 利用通配符,可以创建特定数据的搜索模式。

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

    注意:在不同的DBMS及配置中,通配符的定义可能不同,并且搜索也可能区分大小写。

    6.1.1 百分号通配符

    在搜索字符串中,%表示任何字符出现任意次数(包含0个、1个或多个),但不匹配NULL。
    通配符可以在搜索模式中的任意位置使用,并且可以使用多个通配符。

    MariaDB [sqlbzbh]> SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE 'Fish%';
    +---------+-------------------+
    | prod_id | prod_name         |
    +---------+-------------------+
    | BNBG01  | Fish bean bag toy |
    +---------+-------------------+
    1 row in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    MariaDB [sqlbzbh]> SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '%bean bag%';
    +---------+---------------------+
    | prod_id | prod_name           |
    +---------+---------------------+
    | BNBG01  | Fish bean bag toy   |
    | BNBG02  | Bird bean bag toy   |
    | BNBG03  | Rabbit bean bag toy |
    +---------+---------------------+
    3 rows in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    MariaDB [sqlbzbh]> SELECT prod_name FROM Products WHERE prod_name LIKE 'F%y';
    +-------------------+
    | prod_name         |
    +-------------------+
    | Fish bean bag toy |
    +-------------------+
    1 row in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    MariaDB [sqlbzbh]> SELECT cust_email FROM Customers;
    +-----------------------+
    | cust_email            |
    +-----------------------+
    | sales@villagetoys.com |
    | NULL                  |
    | jjones@fun4all.com    |
    | dstephens@fun4all.com |
    | NULL                  |
    +-----------------------+
    5 rows in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    MariaDB [sqlbzbh]> SELECT cust_email FROM Customers WHERE cust_email LIKE '%';
    +-----------------------+
    | cust_email            |
    +-----------------------+
    | sales@villagetoys.com |
    | jjones@fun4all.com    |
    | dstephens@fun4all.com |
    +-----------------------+
    3 rows in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    

    6.1.2 下划线通配符

    下划线(_)通配符只匹配单个字符。

    MariaDB [sqlbzbh]> SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '_ inch teddy bear';
    +---------+-------------------+
    | prod_id | prod_name         |
    +---------+-------------------+
    | BR01    | 8 inch teddy bear |
    +---------+-------------------+
    1 row in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    MariaDB [sqlbzbh]> SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '__ inch teddy bear';
    +---------+--------------------+
    | prod_id | prod_name          |
    +---------+--------------------+
    | BR02    | 12 inch teddy bear |
    | BR03    | 18 inch teddy bear |
    +---------+--------------------+
    2 rows in set (0.00 sec)
    
    MariaDB [sqlbzbh]> 
    

    6.1.3 方括号通配符

    方括号([])通配符用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符。
    只有微软的Access和SQL Server支持,这里不做实例演示。

    6.2 使用通配符的技巧

    • 为了简洁易用,不过度使用通配符。
    • 为了加快搜索,不在搜索模式的开始放置通配符。
    • 为了搜索正确,仔细注意通配符的位置。
  • 相关阅读:
    C# 之 读取Word时发生 “拒绝访问” 及 “消息筛选器显示应用程序正在使用中” 异常的处理
    sctp和tcp的区别
    kmalloc/kfree,vmalloc/vfree函数用法和区别
    C语言中volatile关键字的作用
    嵌入式开发之NorFlash 和NandFlash
    linux中断--中断嵌套&中断请求丢失
    Linux 套接字编程中的 5 个隐患
    socket编程中write、read和send、recv之间的区别
    HTTP/1.1 Range和Content-Range
    探讨read的返回值的三种情况
  • 原文地址:https://www.cnblogs.com/anliven/p/6213057.html
Copyright © 2011-2022 走看看