精华内容
下载资源
问答
  • 模糊查询like

    千次阅读 2018-09-02 08:56:36
    mysql在做多字段模糊查询的时候用的语句是 select * from tablename where concat(name,brand) like '%关键词%' 1 concat的 作用是 将多条字段拼成字符串。  结果发现有些条目查询不出来 问题是  concat()...

    mysql在做多字段模糊查询的时候用的语句是

    select * from tablename where concat(name,brand) like '%关键词%' 
    • 1

    concat的 作用是 将多条字段拼成字符串。 
    结果发现有些条目查询不出来

    问题是 
    concat()中有任何参数是null 则返回为空

    解决办法 
    1、把null的条目让他不是null 
    2、concat_ws()方法 
    用法:concat_ws(separator,str1,str2,…) 
    以separator作为分隔符 拼接后面的参数 成为一个字符串 
    有null 也无所谓 
    所以我们把语句改为

    select * from tablename where concat_ws("",name,brand) like '%关键词%'
    • 1

    就可以查询出所有条目了,有null也ok~

     

     

     

    oracle中不支持concat的三个参数的拼接,需要更正为双重concat

     

         select * from SYS_MENU where url like concat(concat('%',#{roleName}),'%')

    展开全文
  • 模糊查询也是数据库SQL中使用频率很高的SQL语句,这篇文章主要介绍了详解MyBatis模糊查询LIKE的三种方式,非常具有实用价值,需要的朋友可以参考下
  • mysql模糊查询like

    2020-12-03 18:02:25
    # mysql模糊查询like ### 1:%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 ### 比如:SELECT * FROM [user] WHERE u_name LIKE '%三%' ### 将会把u_...

    mysql模糊查询like


    1:%:表示任意0个或多个字符

    可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
    比如:SELECT * FROM [user] WHERE u_name LIKE '%三%'
    将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
    另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
    SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'
    若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
    虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

    2:_: 表示任意单个字符

    匹配单个任意字符,它常用来限制表达式的字符长度语句:
    比如:SELECT * FROM [user] WHERE u_name LIKE '_三_'
    只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
    再比如 SELECT * FROM [user] WHERE u_name LIKE '三__'; 只找出“三脚猫”这样name为三个字且第一个字是“三”的;

    3:[ ]:表示括号内所列字符中的一个(类似正则表达式)

    指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
    比如:SELECT * FROM [user] WHERE u_name LIKE '[张李王]三' 将找出“张三”、“李三”、“王三”(而不是“张李王三”);
    如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
    SELECT * FROM [user] WHERE u_name LIKE '老[1-9]' 将找出“老1”、“老2”、……、“老9”;

    4:[^ ] :表示不在括号所列之内的单个字符

    其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
    比如:SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三' 将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;
    SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]'; 将排除“老1”到“老4”,寻找“老5”、“老6”、……

    5:通配符

    查询内容包含通配符时,由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:
    function sqlencode(str) str=replace(str,"';","';';")
    str=replace(str,"[","[[]") ';此句一定要在最先 str=replace(str,"_","[_]") str=replace(str,"%","[%]") sqlencode=str end function

    展开全文
  • 【MySQL】Mysql模糊查询like提速优化在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现...

    【MySQL】Mysql模糊查询like提速优化

    在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来。这个时候查询的效率就显得很重要!

    一般情况下like模糊查询的写法为(field已建立索引):

    SELECT `column` FROM `table` WHERE `field` like '%keyword%';

    上面的语句用explain解释来看,SQL语句并未用到索引,而且是全表搜索,如果在数据量超大的时候,可想而知最后的效率会是这样

    对比下面的写法:

    SELECT `column` FROM `table` WHERE `field` like 'keyword%';

    这样的写法用explain解释看到,SQL语句使用了索引,搜索的效率大大的提高了!

    但是有的时候,我们在做模糊查询的时候,并非要想查询的关键词都在开头,所以如果不是特别的要求,”keywork%”并不合适所有的模糊查询

    这个时候,我们可以考虑用其他的方法

    1.LOCATE(’substr’,str,pos)方法

    SELECT LOCATE('xbar',`foobar`);

    ###返回0SELECT LOCATE('bar',`foobarbar`);

    ###返回4SELECT LOCATE('bar',`foobarbar`,5);

    ###返回7

    备注:返回 substr 在 str 中第一次出现的位置,如果 substr 在 str 中不存在,返回值为 0 。如果pos存在,返回 substr 在 str 第pos个位置后第一次出现的位置,如果 substr 在 str 中不存在,返回值为0。

    SELECT `column` FROM `table` WHERE LOCATE('keyword', `field`)>0

    备注:keyword是要搜索的内容,field为被匹配的字段,查询出所有存在keyword的数据

    2.POSITION(‘substr’ IN `field`)方法

    position可以看做是locate的别名,功能跟locate一样

    SELECT `column` FROM `table` WHERE POSITION('keyword' IN `filed`)

    3.INSTR(`str`,’substr’)方法

    SELECT `column` FROM `table` WHERE INSTR(`field`, 'keyword' )>0

    除了上述的方法外,还有一个函数FIND_IN_SET

    FIND_IN_SET(str1,str2):

    返回str2中str1所在的位置索引,其中str2必须以”,”分割开。

    SELECT * FROM `person` WHERE FIND_IN_SET('apply',`name`);

    — https://www.cnblogs.com/mqxs/p/9703000.html

    展开全文
  • 每位程序员们应该都知道,增删改查是mysql最基本的功能,而其中查是最频繁的操作,模糊查找是查询中非常常见的操作,...下面这篇文章就给大家详细介绍了mysql模糊查询like与REGEXP的使用,有需要的朋友们可以参考学习。
  • 原文:mysql模糊查询like/REGEXP 增删改查是mysql最基本的功能,而其中查是最频繁的操作,模糊查找是查询中非常常见的操作,于是模糊查找成了必修课。 like模式 like意思是长得像,有两个模式:_和% _表示...

     

    原文:mysql模糊查询like/REGEXP

     增删改查是mysql最基本的功能,而其中查是最频繁的操作,模糊查找是查询中非常常见的操作,于是模糊查找成了必修课。

    like模式

    like意思是长得像,有两个模式:_和%

    _表示单个字符,通常用来查询定长的数据,如查出所有姓王的三个字的人名,假设姓名列名为name,注意“王”后面有两个_

    select name from 表名 where name like '王__';

    %表示0个或多个任意字符,如查出所有姓王的人名

    select name from 表名 where name like '王%';

    查出所有包含“华”字的人名

    select name from 表名 where name like '%华%';

     

    正则模式 

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

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

     

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

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

     

    .,匹配除\n之外的任意单个字符,类似于_,就不写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


    +,重复1次或多次

    'str+'可以匹配str/strr/strrr/strrrr……

    相比javascript里面的正则而言,这里的正则是简化版的,没有惰性匹配/贪婪匹配,[]内不支持\w\s\d这种语法,也不支持中文,相对简单。

    需要注意的一点是:这两种模式不要混着用,like模式是不支持正则表达式的,REGEXP模式也不认识_和%

    转载于:https://www.cnblogs.com/dongzhuangdian/p/5934052.html

    展开全文
  •  LIKE模糊查询的通配符  搜索通配符字符  在模糊查询中,我们需要查询包含通配符%, _之类的字符,比如我需要查询表名包含user_的表,我们可以用下面两种方法。  SELECT * FROM sysobjects WHERE xtype...
  • 查看表结构(订单表) ...# 3.3.4 Where查询条件之模糊查询like -- 查看表结构(订单表) desc hy_order_20170410; -- 给出表前10行数据 select * from only_lovedata_20200419.hy_order_20170410...
  • SQL使用模糊查询like '%ABC' 和 like '%ABC%'的优化 ...
  • 在PostgreSQL数据库中,~、like、ilike都可以用于模糊查询,本文简单介绍三者使用区别。like标准的模糊查询,支持%(任意个字符),_(任意单个字符),并区分大小写,使用实例:select 'abcDEF' like '%cD%'; -- true...
  • 模糊查询like的使用

    2017-02-28 21:22:06
    模糊查询like的使用我们先插入一段数据 根据自己的需要修改数据库名与表名 use school insert into student values (‘李一’,20,’男’), (‘李四四’,22,’女’), (‘张三’,21,’女’), (‘赵五’,22,’男...
  • 模糊查询 like 引用索引分析 先直接给个结论,然后我们再分析 select * from table where name like 'jonny%'; select * from table where name like '%jonny%'; 如果 name 字段加了索引,第...
  • 模糊查询LIKE语句的SQL注入预防

    万次阅读 2017-02-24 16:30:25
    模糊查询LIKE语句的SQL注入预防
  • 模糊查询like 和 函数instr使用 对比

    千次阅读 2018-05-03 17:37:26
    使用模糊查询Like的时候,如果该字段没有索引,或者数据量大的话(百万级的数据量吧),会出现效率慢的问题。 模糊查询技巧:使用oracle本身的函数instr可以达到模糊查询的效果,且效率快。另外,使用oracle的函数...
  • 本节内容:sql语句之select like模糊查询语法1,like语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。...
  • 通过explain执行计划,我们发现,使用like模糊查询时,如果不以%和_开头查询的话,索引还是有效的 以%或者_开头查询,索引失效 (2)使用覆盖索引 当查询的的条件和查询的结果都是索引中的字段的时候,这个索引...
  • 原文:mysql模糊查询like/REGEXP增删改查是mysql最基本的功能,而其中查是最频繁的操作,模糊查找是查询中非常常见的操作,于是模糊查找成了必修课。 like模式 like意思是长得像,有两个模式:_和% _表示单个...
  • oracle_11gR2_08 分组查询GROUP BY,模糊查询LIKE
  • mybatis中模糊查询like拼接问题 <select id="getUsersByFuzzyQuery" parameterType="User" resultType="User"> select <include refid="columns"/&...
  • 正确认识SQL Server中的模糊查询LIKE

    千次阅读 2016-02-05 18:38:04
    SQL Server中的模糊查询LIKE LIKE语句的匹配格式及正确使用 参考资料SQL Server中的模糊查询LIKE在SQL Server中,当我们想实现模糊查询时,可能我们首先想到的是使用LIKE语句,其次是使用全文搜索(即Full-Text ...
  • mybatis (mysql)模糊查询like的拼接问题 对于要传参数的sql,因为#{…}解析成sql语句时候,会在变量外侧自动加单引号’ ',直接加%会报错 使用concat来拼接参数和%来模糊查询 <select id="queryBookByName" ...
  • sql模糊查询like

    2020-08-28 16:34:06
    问:下面哪个语句查询快? select * from table where name like '%T'; select * from table where name like 'T%';
  • 在mysql中实现模糊查询有两种方法一种是LIKE/NOT LIKE,另一种是REGEXP/NOT REGEXP方法,下面我来给大家介绍它们的用法,希望此教程对各位同学会有所帮助。
  • Mysql模糊查询like

    2020-07-16 09:30:30
    location like #{location}"%" 其中location为表字段,模糊匹配所有以#{location}其中的参数为值开头的结果。
  • sql模糊查询 like

    2019-10-09 18:14:17
    like 经常与where 字句和通配符在一块进行使用,表示像啥啥,模糊查询 通配符 主要是 _ 和 %  % 百分号表示零个,一个或多个字符  _ 下划线表示单个字符 **注意:**1、 MS Access使用问号(?)而不是下划线(_) ...
  • MyBatis模糊查询LIKE

    2018-07-10 00:32:30
    1.表达式: name like"%"#{name}"%"==&gt; Preparing: select * from bbs_brand WHERE namelike"%"?"%"and falg=? limit 0 , 10==&gt;Parameters: 999(String), 1...
  • oracle 中模糊查询 like

    万次阅读 2018-09-17 17:38:13
    oracle中模糊查询like与通配符%实现 1、字段 like ‘%关键字%’字段包含”关键字”的记录 2、字段 like ‘关键字%’字段以”关键字”开始的记录 3、字段 like ‘%关键字’字段以”关键字”结束的记录 如果要找出...
  • Oracle 模糊查询like用法

    千次阅读 2019-04-10 15:06:19
    一、我们可以在where子句中使用like关键字来达到Oracle模糊查询的效果;在Where子句中,可以对datetime、char、varchar字段类型的列用Like关键字配合通配符来实现模糊查询,以下是可使用的通配符: (1)% :零或者...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,249
精华内容 3,699
关键字:

模糊查询like