zoukankan      html  css  js  c++  java
  • MySQL 过滤数据(WHERE子句)

     

    WHERE子句操作符

    从表products中检索prod_name,prod_price列,返回prod_price=2.5的行

    mysql> SELECT  prod_name, prod_price  FROM  products

            -> WHERE prod_price = 2.5 ;

    从表products中检索prod_name,prod_price列,返回prod_name=fuses的行

    mysql> SELECT  prod_name, prod_price  FROM  products

            -> WHERE prod_name = 'fuses' ;

    从表products中检索prod_name,prod_price列,返回prod_price位于5与10之间的行

    mysql> SELECT  prod_name, prod_price  FROM  products

            -> WHERE prod_price  BETWEEN 5 AND 10 ;

    从表customers中检索cust_name列,返回cust_email为null的行

    mysql> SELECT  cust_name  FROM  customers

            -> WHERE cust_email  IS  NULL ;

    组合WHERE子句

    使用逻辑操作符(AND,OR,NOT)组合WHERE子句

    从表products中检索prod_name,prod_price,vend_id列,返回vend_id=1003 且 prod_price大于等于10的行

    mysql> SELECT  prod_name, prod_price, prod_price  FROM  products

            -> WHERE vend_id = 1003  AND  prod_price  >= 10 ;

    从表products中检索prod_name,prod_price,vend_id列,返回vend_id=1002 或 vend_id=1003 的行

    mysql> SELECT  prod_name, prod_price, prod_price  FROM  products

            -> WHERE vend_id = 1002  OR  vend_id = 1003 ;

    从表products中检索prod_name,prod_price 列,返回非 prod_price大于等于10的行

    mysql> SELECT  prod_name, prod_price, prod_price  FROM  products

            -> WHERE  NOT  prod_price  >= 10 ;

    可以使用IN代替OR

    从表products中检索prod_name,prod_price,vend_id列,返回vend_id=1002 或 vend_id=1003 的行

    mysql> SELECT  prod_name, prod_price, prod_price  FROM  products

            -> WHERE vend_id  IN  (1002, 1003) ;

    使用通配符过滤 

    针对过滤条件不够明确的可以使用通配符,如从表products中检索产品名prod_name包含字符anvil的所有产品,可以使用通配符  '%anvil%'。

    百分号(%)通配符:表示任意多个字符。

    从表products中检索prod_name列,返回prod_name以jet开头 的行

    mysql> SELECT  prod_name  FROM  products

            -> WHERE prod_name  LIKE  'jet%' ;

    下划线(_)通配符:表示单个字符。

    从表products中检索prod_name列,返回prod_name以jet开头只有4个字符的行

    mysql> SELECT  prod_name  FROM  products

            -> WHERE prod_name  LIKE  'jet_' ;

    使用正则表达式过滤

     

    从表products中检索prod_name列,返回prod_name包含字符串 '1000' 的行

    mysql> SELECT  prod_name  FROM  products

            -> WHERE prod_name  REGEXP  '1000' ;

    通配符与正则表达式的区别:统配符与列的整个值进行匹配,如LIKE  '1000';  表示要匹配的值必须为'1000'。 而正则表达式与列所包含的值匹配,如REGEXP  '1000' ; 表示要匹配的值包含'1000' 。)

    从表products中检索prod_name列,返回prod_name包含字符串 '1 ton'   或 '2 ton'  或'3 ton' 的行

    mysql> SELECT  prod_name  FROM  products

            -> WHERE prod_name  REGEXP  '1|2|3 ton' ;

    (也可以WHERE prod_name  REGEXP  '[123] ton' ;  或  WHERE prod_name  REGEXP  '[1-3] ton' ;)

    正则表达式字符类

     

    重复元字符表示

    mysql> SELECT  prod_name  FROM  products

            -> WHERE prod_name  REGEXP  '\([0-9] sticks?\)' ;

    由于  '('  为特殊字符,需要前置 \ 才表示该符号本身,如 \ 表示字符

    [0-9] 表示0至9中的一个数字

    sticks?  s后的? 表示s为0个或1个,即  stick 或 sticks

     '\([0-9] sticks?\)'    表示匹配(3 sticks) 、 (2 stick)等类似的字符串。

    mysql> SELECT  prod_name  FROM  products

            -> WHERE prod_name  REGEXP  '[[:digit:]]{4}' ;

    [:digit:]表示匹配任意数字,{4}要求它前面的数字为4个

    '[[:digit:]]{4}' 表示匹配连在一起的任意4位数字

    等价于  '[0-9][0-9][0-9][0-9]'

    定位符

    mysql> SELECT  prod_name  FROM  products

            -> WHERE prod_name  REGEXP  '^[0-9]' ;

    '^[0-9]'  表示第一个字符必须为数字

  • 相关阅读:
    ul中的li设置等宽高css
    Element组件中组件的使用问题
    换个角度聊效率
    【Leetcode 做题学算法周刊】第七期
    【Leetcode 做题学算法周刊】第六期
    【Leetcode 做题学算法周刊】第五期
    【Leetcode 做题学算法周刊】第四期
    【Leetcode 做题学算法周刊】第三期
    【Leetcode 做题学算法周刊】第二期
    【Leetcode 做题学算法周刊】第一期
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9410923.html
Copyright © 2011-2022 走看看