常用的一共有4个方法,如下:

1. 使用locate()方法

1.1.普通用法:

SELECT `column` from `table` where locate('keyword', `condition`)>0

类似于 java 的 indexOf();不过 locate() 只要找到返回的结果都大于0(即使是查询的内容就是最开始部分),没有查找到才返回0;

1.2. 指定其实位置:

SELECT LOCATE('bar', 'foobarbar',5);  --> 7 (从foobarbar的第五个位置开始查找)

2.使用instr()函数 (据说是locate()的别名函数)

 SELECT `column` from `table` where instr(`condition`, ‘keyword’ )>0

       唯一不同的是 查询内容的位置不同,见SQL语句中过的keyword

3.使用position()方法,(据说也是locate()方法的别名函数,功能一样)

SELECT `column` from `table` where position(‘keyword’ IN `condition`)

不过它不再是通过返回值来判断,而是使用关键字 in

4.使用find_in_set()函数

如: find_in_set(str,strlist),strlist必须要是以逗号分隔的字符串

如果字符串str是在的strlist组成的N子串的字符串列表,返回值的范围为1到N

SQL> SELECT FIND_IN_SET('b','a,b,c,d');
+---------------------------------------------------------+
| SELECT FIND_IN_SET('b','a,b,c,d') |
+---------------------------------------------------------+
| |
+---------------------------------------------------------+
1 row in set (0.00 sec)

总结: locate、position 和 instr 的差別只是参数的位置不同,同时locate 多一个起始位置的参数外,两者是一样的。

find_in_set()是个比较特殊的存在,但它们都是返回要查找的子字符串 在 指定字符串中的位置。

速度上前3个比用 like 稍快了一点。(不过这四个函数都不能使用索引,这是个遗憾)

MySQL使用内置函数来进行模糊搜索(locate()等)的更多相关文章

  1. MYSQL常用内置函数详解说明

    函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...

  2. MySql的内置函数

    MySQL的内置函数不但可以在SELECT查询语句中应用,同样也可以在INSERT.UPDATE和DELECT等语句中应用.例如,在INSERT添加语句中,应用日期时间函数获取系统的当前时间,并且将其 ...

  3. mysql常见内置函数

    在mysql中有许多内置的函数,虽然功能都能在PHP代码中实现,但巧妙的应用mysql内置函数可以大大的简化开发过程,提高效率. 在这里我总结一下一些常用的,方便以后查看: mysql字符串函数: c ...

  4. MySQL基础 - 内置函数

    Concat() 用于连接字段,一般DBMS使用+或者||. ex: 注意:上图中新检索出来的列名为'CONCAT(id, '->', name)'(实际上没有列名),这样虽然不影响在MySQL ...

  5. mysql常用内置函数-查询语句中不能使用strtotime()函数!

    来自:http://yushine.iteye.com/blog/775407 FROM_UNIXTIME把 unix时间戳转换为标准时间 unix_timestamp把标准时间转换为 unix时间戳 ...

  6. 07 MySQL常用内置函数

    常用函数     1.字符串函数         CONCAT(str1,str2,..,strN)             将str1,str2..strN 拼接成一个字符串,当这里有任何一个为NU ...

  7. MySQL常用内置函数整理

    [1]@@datadir 函数作用:返回数据库的存储目录构造SQL语句 select @@datadir;ps:@@basedir返回mysql的根目录[2]@@version_compile_os ...

  8. MySQL常用内置函数

    本篇博客源自以下博客地址: http://www.mamicode.com/info-detail-250393.html

  9. 【mysql】mysql内置函数

    mysql常用内置函数 1.mysql字符串函数 contact 字符串连接函数 mysql>select contact("he",'llo');# hello lcase ...

随机推荐

  1. Nhibernate 存储过程获取返回值

    写在前面:因为项目使用ssh.net所以做着做着要调用存储过程,而且是有返回值的,按照以前的做法直接在参数里指定下就可以获取,但是在nhibernate里调用就有点陌生了,百度一下得出的结果有两种:第 ...

  2. Knockoutjs+select2 人员搜索

    HTML: <select class="form-control PersonEmail" id="txtProjectManager" data-bi ...

  3. 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错

    如题 报错提示: 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值.","Sta ...

  4. SQL Server递归实例

    例子一 -- ============================================= -- 根据EID返回其下属的EID,Layer=1表示直接下属,NULL返回所有下属 -- s ...

  5. Nginx使用

    1. 基本使用 分linux和windows版 windows版可以直接双击exe运行,默认配置为80端口,只有两个页面 html目录下为页面.css.js等代码文件 conf目录下为配置文件 主要的 ...

  6. 单机版solr7.3

    搭建Solr7.3单机版 原博客  https://blog.csdn.net/yiqing_summer/article/details/79934584 1.Solr下载:http://mirro ...

  7. JavaScript作用域详解

         作用域在JavaScript中是非常重要的概念,理解了它对更深入地理解闭包等概念都有很大的帮助,这篇文章就来谈谈我对作用域的理解. 一.全局作用域与局部作用域       在JavaScri ...

  8. 小程序:怎么在两层列表循环(wx:for)的时候判断是否为最后一个元素

    问题说明: 如下图所示,在箭头所指的最后一个选项的底线与底部操作栏的上边线重叠,需要清除掉最后一个元素的底线: 想到的解决方案:  通过判断是否为最后一个元素,然后通过条件渲染(wx:if)动态添加对 ...

  9. [Objective-C语言教程]数字(13)

    在Objective-C编程语言中,要以对象形式保存基本数据类型,如:int,float,bool.Objective-C提供了一系列与NSNumber一起使用的方法,一些常用重要的方法列在下表中. ...

  10. H5新手教程,小白来看看。

    H5教程(一) 相信点进来看这篇文章的应该都是刚刚接触H5的新手,那么你真的是找到了一篇合适的文章. 1.学习前准备 既然想学习好H5,只是这样看是不够的,还需要动手练习,以及及时复习,所以我推荐几款 ...