zoukankan      html  css  js  c++  java
  • mysql的模糊查询

    mysql模糊查询like/REGEXP
    (1)like / not like
    MySql的like语句中的通配符:百分号、下划线和escape

    %:表示任意个或多个字符。可匹配任意类型和长度的字符。
    Sql代码
    select * from user where username like '%huxiao';

    select * from user where username like 'huxiao%';

    select * from user where username like '%huxiao%';
    另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件

    SELECT * FROM [user] WHERE u_name LIKE ‘%三%’ AND u_name LIKE ‘%猫%’

    若使用 SELECT * FROM [user] WHERE u_name LIKE ‘%三%猫%’

    虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。


    _:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:(可以代表一个中文字符)

    Sql代码
    select * from user where username like '_';

    select * from user where username like 'huxia_';

    select * from user where username like 'h_xiao';

    如果我就真的要查%或者_,怎么办呢?使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用
    Sql代码
    select username from gg_user where username like '%xiao/_%' escape '/';

    select username from gg_user where username like '%xiao/%%' escape '/'; 意思就是说/之后的_不作为通配符

    (2)正则表达式

    规则如下:

    ^ 匹配字符串的开始部分

    $ 匹配字符串的结束部分

    . 匹配任何字符(包括回车和新行)

    a* 匹配0或多个a字符的任何序列

    a+ 匹配1个或多个a字符的任何序列

    a? 匹配0个或1个a字符

    de|abc 匹配序列de或abc

    (abc)* 匹配序列adc的0个或者多个实例

    {n}、{m,n} {n}或{m,n}符号提供了编写正则表达式的更通用方式,能够匹配模式的很多前述原子(或“部分”)。m和n均为整数。

    a* 可被写为a{0,}

    a+ 可被写为a{1,}

    a? 可被写为a{0,1}

    [a-dX] 匹配任何是a,b,c,d或者X的字符,两个其他字符之间的’-'字符构成一个范围

    [^a-dX] 匹配任何不是a,b,c,d或者X的字符,前面的字符’^'是否定的意思

    举例如下:
    ^,匹配字符串开始位置,还是上面的例子,查询所有姓王的人名

    select name from 表名 where name regexp '^王';

    $,匹配字符串结束位置,如查询所有姓名末尾是“明”的人名

    select name from 表名 where name regexp '明$';

    .,匹配除 之外的任意单个字符,类似于_,就不写sql语句了

    [……],匹配[]中包含的任何一个字符,abcdef……xyz可以简写为[a-z],0123456789简写成[0-9],如查询出w/z/s开头的的人名

    select name from 表名 where name regexp '^[wzs]';

    [^……],匹配不包含在[]的字符,如查询出除了w/z/s开头之外的人名

    select name from 表名 where name regexp '^[^wzs]';

    a|b|c,匹配a或b或c,如将绩效为A-或A或A+的员工查出来,假设绩效列名performance

    select performance from 表名 where performance regexp 'A-|A|A+';
    *,重复0次或多次,熟悉javascript正则的同学都知道

    'str*'可以匹配st/str/strr/strrr……


    ?,重复0次或1次

    'str?'可以匹配st/str

  • 相关阅读:
    std 迭代器的几种用法
    Cocos2dx3.1+xcode +lua配置
    php获取文件创建时间、修改时间
    如何创建一个基于jquery的编辑器
    封装ajax,简单的模仿jquery提交
    如何实现SQL事务的提交,又不对外进行污染
    .net mvc结合微软提供的FormsAuthenticationTicket登陆
    Http GET、Post方式的请求总结
    post 报文请求接口方法
    zip格式压缩、解压缩(C#)
  • 原文地址:https://www.cnblogs.com/addauda/p/10304583.html
Copyright © 2011-2022 走看看