• mysql函数之一:INSTR、LOCATE、POSITION VS LIKE


    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;

    执行结果如下:

    MySQL LOCATE、POSITION和INSTR函数查找字符串中指定子字符串的开始位置的操作效果

    从上图中代码执行的结果可以看出,子字符串“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 比较严格 如果没有数据 则不成立

  • 相关阅读:
    让DIV实现抖动效果!
    Linux下如果python2和python3同时存在使用pip3
    Eclipse 查找一个接口的具体实现
    linux下编译安装软件到指定目录
    NG机器学习-octave基本操作
    NG机器学习
    全注解方式构建SpringMVC项目
    Java多线程学习开发笔记
    RabbitMQ 学习开发笔记
    Redis 学习开发笔记
  • 原文地址:https://www.cnblogs.com/duanxz/p/5103810.html
Copyright © 2020-2023  润新知