美文网首页
【MySQL】WHERE子句

【MySQL】WHERE子句

作者: KL2的杂货铺 | 来源:发表于2020-01-09 20:42 被阅读0次

    数据库中包含大量数据,有时只需要查询表中的指定数据,即对数据进行过滤。在SELECT语句中,可通过WHERE 子句对数据进行过滤,语法格式如下:

    SELECT 字段名1,字段名2,…,字段名n
    FROM 表名
    WHERE 查询条件
    

    1. 常规操作符查询

    在WHERE子句中,提供一系列的条件操作符,如下所示:

    操作符 说明
    = 相等
    != 不相等
    < 小于
    <= 小于等于
    > 大于
    >= 大于等于
    IN 在范围内
    BETWEEN 位于两指之间

    1.1 常规操作符查询

    #查询价格为10.2元的水果名称
    SELECT f_name,f_price
    FROM fruits
    WHERE f_price = 10.2;
    

    1.2 带BETWEEN AND的范围查询

    #查询价格在2.00元到10.20元的水果名称和价格
    SELECT f_name,f_price
    FROM fruits
    WHERE f_price BETWEEN 2.00 AND 10.20;
    

    1.3 带IN关键字的查询

    #查询s_id为101和102的记录
    SELECT s_id,f_name,f_price
    FROM fruits
    WHERE s_id IN(101,102);
    

    1.4 带NOT关键字的查询

    SELECT s_id,f_name,f_price
    FROM fruits
    WHERE s_id NOT IN(101,102);
    

    1.5 空值检查

    SELECT f_name,f_price
    FROM fruits
    WHERE f_price IS NULL;
    

    2. 用通配符过滤(LIKE)

    使用条件操作符和IN,NOT等关键字查询都是对已知指进行过滤。如需对某特定文本进行过滤,就需要使用通配符进行匹配。

    2.1 百分号(%)通配符

    '%'通配符可匹配多个字符,且区分大小写。

    #查找所有以'b'开头的水果
    SELECT f_id,f_name
    FROM fruits
    WHERE f_name LIKE 'b%';
    

    2.2 下划线(_)通配符

    '_'通配符只能匹配单个字符。

    #查询以字母y结尾,且y前面有四个字母的记录
    SELECT f_id,f_name
    FROM fruits
    WHERE f_name LIKE '____y';
    

    3. 用正则表达式进行过滤(REGEXP)

    正则表达式是用来匹配文本的特殊的串(字符集合)。

    3.1 查询以特定字符或字符串开头的记录

    SELECT *
    FROM fruits
    WHERE f_name REGEXP '^b';
    

    3.2 查询以特定字符或字符串结尾的记录

    SELECT *
    FROM fruits
    WHERE f_name REGEXP 'y$';
    

    3.3 用符号"."来替换字符串中的任意一个字符

    SELECT *
    FROM fruits
    WHERE f_name REGEXP 'a.g';
    

    3.4 使用"*"和"+"来匹配多个字符

    SELECT *
    FROM fruits
    WHERE f_name REGEXP '^ba*';
    

    3.5 匹配指定字符串

    #查询f_name字段值包含字符串"on"或者"ap"的记录
    SELECT *
    FROM fruits
    WHERE f_name REGEXP 'on|ap';
    

    3.6 匹配指定字符中的任意一个

    方括号[] 指定一个字符集合,只匹配其中任何一个字符。

    SELECT *
    FROM fruits
    WHERE f_name REGEXP '[ot]';
    

    3.7 匹配指定字符以外的字符

    [^字符集合] 匹配不在指定集合中的任何字符。

    SELECT *
    FROM fruits
    WHERE f_name REGEXP '[^a-e1-2]';
    

    3.8 使用{n,}或者{n,m}来指定字符串连续出现的次数

    SELECT *
    FROM fruits
    WHERE f_name REGEXP 'x{2,}';
    

    相关文章

      网友评论

          本文标题:【MySQL】WHERE子句

          本文链接:https://www.haomeiwen.com/subject/pjduactx.html