LOCATE vs INSTR

Maa*_*man 5 mysql

    SELECT INSTR('1234','2')  #returns 2
    SELECT LOCATE('2','1234') #returns 2
Run Code Online (Sandbox Code Playgroud)

除了参数编号之外,在选择任何一个函数之前还有任何明显的差异需要注意吗?

Rev*_*ick 7

INSTR()函数从第一个字符开始搜索.

LOCATE()功能有第三个参数,允许您更改起始位置.

-- returns 4
SELECT INSTR("Alibaba", "ba")

-- returns 4 because the third parameter was not specified
SELECT LOCATE("ba", "Alibaba")

-- returns 6
SELECT LOCATE("ba", "Alibaba", 5)
Run Code Online (Sandbox Code Playgroud)


Nav*_*nDA 4

定位

LOCATE()函数返回字符串中子字符串第一次出现的位置。

仪器

INSTR()函数返回一个字符串在另一个字符串中第一次出现的位置。

例如

SELECT LOCATE("H", "PHP") AS MatchPosition;`
-- -> returns 2
SELECT INSTR("PHP", "H") AS MatchPosition;
-- -> returns 2
Run Code Online (Sandbox Code Playgroud)

并且性能是

-- 5.074 sec
SELECT BENCHMARK(100000000,INSTR('foobar','foo'));

-- 5.086 sec
SELECT BENCHMARK(100000000,LOCATE('foo','foobar')); 
Run Code Online (Sandbox Code Playgroud)