美文网首页
SQL之模糊查询的四种用法

SQL之模糊查询的四种用法

作者: Cute_小肥鸡 | 来源:发表于2020-08-11 09:45 被阅读0次

    MySql 使用 like关键字 进行模糊查询,like关键字 通常用在 where条件查询,like关键字 通常配合 %、_、[ ]、[^ ] 使用。

    一、%

    %表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

    1、所查询字段 + like '%深%'
    //把含有“深”字的 FName字段 搜索出来
    select * from T_OM_Institution where FName like '%深%'
    
    图1

    注意:只能查询连续的文字。【比如“深圳市福田区”可以查询,“深圳市区”查询不出来】

    2、所查询字段 + like '%深%' and 所查询字段 + like '%福%'
    //把含有“深”字、“福”字的 FName字段 搜索出来
    select * from T_OM_Institution where FName like '%深%' and FName like '%福%'
    
    图2

    注意:此语句没有那么灵活,比较适用于固定的某个文字的查询。

    3、所查询字段 + like '%深%福%小%'
    //把含有“深”字、“福”字、“小”字的 FName字段 搜索出来
    select * from T_OM_Institution where FName like '%深%' and FName like '%深%福%小%'
    
    图3

    注意:此语句比较灵活,可以查询相隔几个文字,比较实用。【比如“深圳市福田区小学”可以查询,“深圳市福区小”也可以查询】

    二、_

    表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。

    1、查询出中间含有“小”字的FRealName字段(前提:名字三个字)
    select * from T_UM_User where FRealName like '_小_'
    //只能查询出类似“唐小一”这样的FRealName为三个字且中间一个字为:“小”
    
    图4
    2、查询出姓“唐”的姓名(前提:名字三个字)
    select * from T_UM_User where FRealName like '唐__'
    //唐__:后面有两横杠
    //查询出姓“唐”的FRealName,且FRealName的字数必须为3
    
    图5
    3、查询名字最后一个字为“西”的姓名(前提:名字三个字)
    select * from T_UM_User where FRealName like '__西'
    //__西:前面有两横杠
    //查询出姓名最后一个字为“西”的姓名,且FRealName的字数必须为3
    
    图6
    4-1、查询出姓“文”的姓名(前提:名字两个字)
    select * from T_UM_User where FRealName like '文_'
    //文_:后面只有一横杠
    
    图7
    4-2、查询出姓“唐”的姓名(前提:名字两个字或三个字)
    select * from T_UM_User where FRealName like '%唐_%'
    //唐_:后面只有一横杠
    //查询出来的姓名可以是两个字,也可以是三个字
    
    图8
    5-1、查询名字最后一个字为“亮”的姓名(前提:名字两个字)
    select * from T_UM_User where FRealName like '_亮'
    
    图9
    5-2、查询名字最后一个字为“师”的姓名(前提:名字两个字或三个字)
    select * from T_UM_User where FRealName like '%_师%'
    //查询出来的姓名可以是两个字,也可以是三个字
    
    图10

    三、[ ] -> 语句执行之后没反应

    表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

    select * from T_UM_User where FRealName like '[付唐]局'
    //查询出“付局”,“唐局”(而不是“付唐局”)
    

    四、[^ ] -> 语句执行之后没反应

    表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

    select * from T_UM_User where FRealName like '[^付唐]局'
    //查询出不姓“付”,“唐”的“李局”、“蔡局”等
    

    相关文章

      网友评论

          本文标题:SQL之模糊查询的四种用法

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