zoukankan      html  css  js  c++  java
  • 四、通配符过滤、正则表达式

    LIKE谓词:

    为在搜索子句中使用通配符,必须使用 LIKE 操作符。 LIKE 指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。

    1. %:任何字符出现任意次数。

    select column_name1 from table_name where column_name2 like 'jet%';
    
    检索以jet开头的数据,默认不区分大小写。
    

    2. _: 下划线匹配单个字符

    只匹配一个字符,不能多也不能少,不能像%通配符一样匹配0个或多个。

    3.通配符使用规则

    • 不要过度使用通配符。 如果其他操作符能达到相同的目的,应该使用其他操作符。
    • 不要用在开头。 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
    • 仔细注意通配符的位置

    4.正则表达式REGEXP

    select column_name from table_name where column_name REGEXP '1000';
    

    检索column_name字段中含有字符1000的数据。比如:jef1000sad;

    如果使用LIKE,那么它将不会匹配jef1000sad中的1000,因为LIKE是全词匹配。

    (1) .(点号)表示匹配任意一个字符
    select column_name from table_name where column_name REGEXP '.000';
    

    检索含有'000'前面有一个字符的数据。比如:

    ssfdd1000
    dsafd2000
    

    这两个都可以。

    (2) OR匹配
    select column_name from table_name where column_name REGEXP '100|101';
    

    把要匹配的内容用单引号括起来,此语句匹配字段中含有100或者101的值。是含有,而不是全词匹配。

    (3) 匹配几个字符之一。

    使用中括号:

    select column_name from table_name where column_name REGEXP '[35] tom';
    

    此语句匹配含有‘3 tom’或者‘5 tom’的字段值。注意不是全词匹配,含有就行。

    此外还可以进行范围匹配:

    • [0-9],[1-3] 等等进行数字范围匹配。
    • [a-z]来匹配任意字符。
    (4)匹配特殊字符。

    如果我们要查找字段值中含有‘.’的值,假如我们使用:

    ... REGEXP '.';
    

    那么我们将匹配中所有字段,因为在正则表达式中点号表示匹配任意一个字符。所以我们需要转义

    select column_name from table_name where column_name REGEXP '\.';
    

    特殊字符匹配:

    (5) 匹配字符类

    举个例子,匹配含有空格的字段值,不仅可以使用:

    ... REGEXP ' ';
    

    还可以根据上表中的[:blank:]:

    select name from tb2 where name regexp '[[:blank:]]';
    

    记住外面还需要套上个中括号才行。

    (6) 匹配多个实例

    举两个例子:

    字符's'后面跟的问号表示匹配0个或1个,所以可以匹配到含有'stick'或者'sticks'.

    下一个例子:

    第一个正则表达式匹配任意出现的数字,而{4}又规定了出现4次,所以这个语句检索连续出现4个数字的字段值。

    (7) 定位符

    我们上面用的正则表达式都是在字段值中的任意位置进行匹配,但假如我们要检索开头的某些字符的字段值呢?

    开头:^

    select name from tb2 where name regexp '^[1-5]';
    

    检索开头是以1或2或3或4或5的字段值。

    结尾:$

    select name from tb2 where name regexp '[mo]$';
    

    检索以字符m或者o结尾的字段值。

    ^ 符号还有一个用途:
    在中括号中间表示检索不在这个集合中间的值:

    select name from tb2 where name regexp '[^1-3 tom]';
    

    此语句是检索除了'1 tom','2 tom','3 tom'以外的字段值。可以看做全词否定。

  • 相关阅读:
    设计模式学习笔记二:面向对象基础二
    设计模式学习笔记二:面向对象基础一
    设计模式学习笔记四:工厂方法(Factory Method)
    设计模式学习笔记六:.NET反射工厂
    设计模式学习笔记七:常用设计模式原则总结
    设计模式学习笔记二:面向对象基础五之集合和泛型
    设计模式学习笔记一:UML类图
    linq学习笔记(1):c#3.0新特性(2)
    Android系列讲座(1):Notification 与状态栏信息
    《Android/OPhone 开发完全讲义》目录
  • 原文地址:https://www.cnblogs.com/love-jelly-pig/p/10357185.html
Copyright © 2011-2022 走看看