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

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

时间: 2024-10-14 02:55:42

Mysql函数INSTR、LOCATE、POSITION VS LIKE的相关文章

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

你是否一直在寻找比MySQL的LIKE语句更高效的方法的,下面我就为你介绍几种. LIKE语句 SELECT `column` FROM `table` where `condition` like`%keyword%' 事实上,可以使用 locate(position) 和 instr这两个函数来代替 LOCATE语句 SELECT `column` from `table` where locate('keyword',`condition`)>0 或是 locate 的別名 positio

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

你是否一直在寻找比MySQL的LIKE语句更高效的方法的,下面我就为你介绍几种. LIKE语句 SELECT `column` FROM `table` where `condition` like `%keyword%' 事实上,可以使用 locate(position) 和 instr 这两个函数来代替 一.LOCATE语句 SELECT `column` from `table` where locate('keyword', `condition`)>0 二.或是 locate 的別名

【原创】oracle函数INSTR的MySQL实现

一个迁移项目遇到的,MySQL的instr函数只能查找子串是否在父串中,没法按照出现的次数进行查找. 这里我自己写了一个,以便迁移.当然我这里仅仅针对的是迁移,可能没有完全实现原有函数的细节. Oracle 里用了几次如下的调用, SQL> select instr('This is belong to you, but not to me.','to',1,1) as pos from dual;                  POS                            

mysql函数大全

mysql函数大全 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL,返回NULL. mysql> select ASCII('2');    -> 50mysql> select ASCII(2);    -> 50mysql> select ASCII('dx');    -> 100也可参见ORD()函数. ORD(str) 如果字符串str最

【转】mysql函数

MySQL函数 MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: 系统信息函数: 加密函数: 格式化函数: 一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. 函数 作用 ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 SELECT CEIL(1.5) -- 返回2 FLOOR(x) 返回小于或等于x的最大整数 SELECT FLOOR(1.5) 

mysql 函数库

函数库 mysql存储过程基本函数包括:字符串类型,数值类型,日期类型 一.字符串类 CHARSET(str) //返回字串字符集 CONCAT (string2 [,… ]) //连接字串 INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0 LCASE (string2 ) //转换成小写 LEFT (string2 ,length ) //从string2中的左边起取length个字符 LENGTH (string )

转载 --mysql函数大全

控制流函数 IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境. mysql> select IFNULL(1,0); -> 1 mysql> select IFNULL(0,10); -> 0 mysql> select IFNULL(1/0,10); -> 10 mysql> select IFNULL(1/0,'yes')

MySQL函数大全及使用方法

mysql函数大全 一.字符串函数 CONCAT(s1,s2...,sn)返回来自于参数连结的字符串.如果任何参数是NULL,返回NULL.可以有超过2个的参数.一个数字参数被变换为等价的字符串形式. CONCAT_WS(sep,s1,s2...,sn)将s1,s2...,sn连接成字符串,并用sep字符间隔 QUOTE(str) 用反斜杠转义str中的单引号 STRCMP(s1,s2)比较字符串s1和s2 LTRIM(str) 返回删除了其前置空格字符的字符串str. 该函数对多字节是可靠的.

MySQL 函数大全及用法示例

1.字符串函数ascii(str)   返回字符串str的第一个字符的ascii值(str是空串时返回0)  mysql> select ascii('2');  -> 50  mysql> select ascii(2);  -> 50  mysql> select ascii('dete');  -> 100 ord(str)   如果字符串str句首是单字节返回与ascii()函数返回的相同值. 如果是一个多字节字符,以格式返回((first byte ascii