模式匹配

模式匹配

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}$';
    

你可能感兴趣的:(模式匹配)