LOCATE、POSITION和INSTR函数相似功能实例

使用LOCATE、POSITION和INSTR函数查找字符串中指定子字符串的开始位置。SQL语句如下:

mysql>SELECT LOCATE('369','www.baike369.com') AS col1,
>POSITION('369' IN 'www.baike369.com') AS col2,
>INSTR('www.baike369.com','369') AS col3;

执行结果如下:

从上图中代码执行的结果可以看出,子字符串“369”在字符串“www.baike369.com”中从第10个字母位置开始,因此,这3个函数返回的结果都为5。

Mysql 大家都会用这样的語法:

SELECT `column` FROM `table` where `condition` like `%keyword%’

事实上,可以使用 locate 和 instr 这两个函数来代替

SELECT `column` from `table` where locate(‘keyword’, `condition`)>0
或是 locate 的別名 position
SELECT `column` from `table` where position(‘keyword’ IN `condition`)

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

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

速度上这三个比用 like 稍快了一點。

另付三个函数的说明:

  • INSTR(str,substr)

返回字符串 str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,只是参数的顺序被颠倒。

mysql> SELECT INSTR(‘foobarbar’, ‘bar’);

-> 4

mysql> SELECT INSTR(‘xbar’, ‘foobar’);

-> 0

这个函数支持多字节字元,并且只有当至少有一个参数是二进制字符串时区分大小写。

  • LOCATE(substr,str) , LOCATE(substr,str,pos)

第一个语法返回字符串 str中子字符串substr的第一个出现位置。第二个语法返回字符串str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr 不在str中,则返回值为0。

mysql> SELECT LOCATE(‘bar’, ‘foobarbar’);

-> 4

mysql> SELECT LOCATE(‘xbar’, ‘foobar’);

-> 0

mysql> SELECT LOCATE(‘bar’, ‘foobarbar’,5);

-> 7

这个函数支持多字节字元,并且只有当至少有一个参数是二进制字符串时区分大小写。

  • POSITION(substr IN str)

POSITION(substr IN str)是 LOCATE(substr,str)同义词。

速度上这三个比用 like 稍快了一點。

当 condition 需要作为参数传递时,为了避免因为类型的原因 而查询结果错误的问题(position(‘keyword’ IN $a)  keyword 为int类型时,则查询结果总是为一条) 应使用find_IN_SET代替。find_int_set(列名,$a) ;   当表中无数据或者列为null时,postion会成立 find_IN_SET 比较严格 如果没有数据 则不成立

mysql函数之一:INSTR、LOCATE、POSITION VS LIKE的更多相关文章

  1. MySQL比like语句更高效的写法locate position instr find_in_set

    使用内部函数instr,可代替传统的like方式查询,并且速度更快. instr函数,第一个参数是字段,第二个参数是要查询的串,返回串的位置,第一个是1,如果没找到就是0. 例如, select na ...

  2. MySQL比like语句更高效写法locate position instr find_in_set

    你是否一直在寻找比MySQL的LIKE语句更高效的方法的,下面我就为你介绍几种. LIKE语句 SELECT `column` FROM `table` where `condition` like  ...

  3. Mysql - 函数

    Mysql提供的函数是在是太多了, 很多我都见过, 别说用了. 园子里面, 有人弄了一个比较全的. MYSQL函数 我这里会将他写的完全拷贝下来, 中间会插入一些自己项目中使用过的心得 一.数学函数 ...

  4. MySQL 函数大全

    mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NU ...

  5. MySQL函数讲解(MySQL函数大全)

    讲mysql函数之前先给大家展示一下利用mysql函数的一个例子: SELECT i.item_id, i.item_name, i.cid, i.last_update_time, u.url, u ...

  6. mysql函数全解析

    本文摘自:http://www.cnblogs.com/cocos/archive/2011/05/06/2039469.html mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ...

  7. 【转】mysql函数

    MySQL函数 MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: 系统信息函数: 加密函数: 格式化函数: 一.数学函数 数学函数主要用于处理数字,包括 ...

  8. Mysql 函数大全- 5.6 中文解释函数参考

    mysql 函数大全 5.6 函数参考 5.6函数参考    (只翻译部分,细节查看相关英文版) 12.1功能和操作员参考 12.2表达式评估中的类型转换 12.3运营商 12.4控制流功能 12.5 ...

  9. mysql学习【第4篇】:MySQL函数和编程

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第4篇]:MySQL函数 官方文档 : 官方文档 常用函数 分类: 数学函数 , ...

  10. mysql 函数示例(转)

    MySQL函数大全及用法示例 1.字符串函数ascii(str)   返回字符串str的第一个字符的ascii值(str是空串时返回0)  mysql> select ascii('2');   ...

随机推荐

  1. Treflection04_面试题

    1. package reflectionZ; import java.lang.reflect.Field; import java.lang.reflect.Method; public clas ...

  2. scala LocalDateTime String 转换

    DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");LocalDateTime ti ...

  3. mysql升级的一些踩坑点

    升级的方法一般有两类: 1.利用mysqldump来直接导出sql文件,导入到新库中,这种方法最省事也最保险 缺点:大库的mysqldump费时费力. 2.直接替换掉 mysql 的安装目录和 my. ...

  4. css滚动相关问题记录

    1) 关于滑动加速优化,可以通过css进行处理 例如,html如下: <div class="content-dialog"> <h1>活动规则</h ...

  5. Redis分区探究

    Redis比较好的分区算法是采用Hash分区算法 也就是我们可以将所有的server例如:user1,user2,user3.通过hash函数将key转化为一个数字然后求余找到需要存储的server. ...

  6. 四十五 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的bool组合查询

    bool查询说明 filter:[],字段的过滤,不参与打分must:[],如果有多个查询,都必须满足[并且]should:[],如果有多个查询,满足一个或者多个都匹配[或者]must_not:[], ...

  7. neutron之SDN简单测试

    title: Neutron SDN 手动实现手册 date: 2017-04-13 23:37 tags: Network 本文旨在通过自己搭建类似neutron (openvswitch + gr ...

  8. 如何退出telnet

    ctrl键+ENter键 然后输入 进入telnet 命令 quit

  9. #define GPFCON (* (volatile unsigned long * )0x56000050 )

    int a; int *p; p = &a; *p = 0x100; //a=0x100 p = (int *)0x56000050; *p =0x100; *( ( int * ) 0x56 ...

  10. 《Java程序员职场全攻略 从小工到专家》 - 书摘精要

    (前言) 学习招式在次,提升内力才是最主要的: (P10) 选择一门编程语言,只是入门的途径.过分依赖编程语言,只会让自己成为代码高手,而不是开发大牛,要知道编程语言只是一种工具,更重要的是编程思想: ...