模式匹配

作者: 简书帅气的昵称已被使用 | 来源:发表于2019-07-04 20:05 被阅读0次

    模式匹配

    sql模式匹配允许使用"_"匹配任何单个字符,"%"匹配任意数目字符(包括零字符)。使用sql模式时,不能使用= 或!=,应使用like或not like比较操作符。

    实例:

    1. 找出以'b'开头的名字

      select * from pet where name like 'b%';
      
    2. 找出以'fy'结尾的名字

      select * from pet where name like '%fy';
      
    3. 找出包含'w'的名字

       select * from pet where name like '%w%';
      
    4. 找出正好包含5个字符的名字

      select * from pet where name like '_____';
      

    由MySQL提供的模式匹配的其他类型是使用正则扩展表达式。使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE)。

    • . :'.'匹配任意单个字符
    • […]:'[...]'匹配在方括号内的任何字符。例如,"[abc]"匹配"a"、"b"或"c"。"[a-z]"匹配任何字母,而"[0-9]"匹配任何数字
    • *:匹配零个或多个在它前面的字符。例如,"x*"匹配任何数量的"x"字符,"[0-9*]"匹配任何数量的数字,而".*"匹配任何数量的任何字符
    • ^:必须以指定字符开始
    • $:必须以指定字符结束

    实例:

    1. 找出以"b"开头的名字,使用"^"匹配名字的开始

      select * from pet where name regexp '^b';
      
    2. 强制regexp比较区分大小写,使用binary关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写"b"

      select * from pet where name regexp binary '^b';
      
    3. 找出以'fy'结尾的名字,使用'$'匹配名字的结尾

      select * from pet where name regexp 'fy$';
      
    4. 找出包含'w'的名字

      select * from pet where name regexp 'w';
      
    5. 找出正好包含5个字符的名字,使用"^"和"$"匹配名字的开始和结尾,和5个"."实例在两者之间

      select * from pet where name regexp '^.....$';
      
    6. 使用"{n}"重复n次操作符重写5中查询

      select * from pet where name regexp '^.{5}$';
      

    相关文章

      网友评论

        本文标题:模式匹配

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