zoukankan      html  css  js  c++  java
  • Mysql函数instr、locate、position VS like

    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

    >0 及筛选出所有符合模糊查询的字段

    <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)同义词。

  • 相关阅读:
    坚持--从今天开始
    51系列单片机的精确延时的解释(文章如有问题之处,请劳烦指正,谢谢!) 可以看看采纳下。
    利用宏定义实现C++程序在Unix和Win32环境下的通用性
    [转]浅谈C++指针直接调用类成员函数
    类间调用inline函数的效率
    C++ inline函数与编译器设置
    GNU的makefile文件编写说明
    Windows Live Writer 2012 Test
    测试Windows Live Writer
    Mathematica学习笔记2
  • 原文地址:https://www.cnblogs.com/Yiran583/p/4544238.html
Copyright © 2011-2022 走看看