2017-07-20 66 views
1
SELECT INSTR('1234','2') #returns 2 
    SELECT LOCATE('2','1234') #returns 2 

除了參數編號之外,在選擇任何一個函數之前是否還有任何顯着差異?LOCATE vs INSTR

+1

手冊說,'INSTR'等於調用'LOCATE'當提供2個參數。 Quote:'這是一樣的雙參數形式的LOCATE(),除了參數的順序是顛倒。除非你使用帶3個參數的'LOCATE',否則你上面寫的是相同的。如果你需要字符串在子字符串中的位置,那麼明顯的選擇(對我個人而言)將是'INSTR',因爲它清楚你後面的內容。 – Mjh

+0

謝謝Mjh,這是有幫助的 –

回答

3

找到

LOCATE()函數返回字符串的子串的第一個出現的位置。

INSTR

INSTR()該函數返回在另一個字符串的字符串的第一次出現的位置。

例如

SELECT LOCATE("H", "PHP") AS MatchPosition;` 
//-> returns 2 
SELECT INSTR("PHP", "H") AS MatchPosition; 
//-> returns 2 

而且性能

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

-- 5.086 sec 
SELECT BENCHMARK(100000000,LOCATE('foo','foobar'));