• 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

  • 相关阅读:
    博士考试复习过程总结
    制作在Linux、Unix上以daemon方式启动Apusic的详细步骤(转)
    重开Blog
    给计算机的兄弟姐妹们补补身体→煲银耳粥
    被人夸成像设计师,高兴呐
    今天问题总结(Hibernate配置参数访问Oracle,Linux下的Apusic自启动)
    HDU ACM 1272 小希的迷宫
    Uva 10115 Automatic Editing
    HDU ACM 1162 Eddy's picture(MST)
    Uva 10474 Where is the Marble?(水题)
  • 原文地址:https://www.cnblogs.com/addauda/p/10304583.html
Copyright © 2020-2023  润新知