MariaDB tem um
INSTR() função e também um LOCATE() função. Ambas as funções parecem fazer exatamente a mesma coisa – retornar a posição de uma substring dentro de uma string. No entanto, há uma diferença.
As diferenças
Podemos ver a diferença entre essas duas funções observando sua sintaxe, bem como alguns exemplos.
Sintaxe
A sintaxe para
INSTR() :INSTR(str,substr) As duas sintaxes aceitas para
LOCATE() :LOCATE(substr,str)
LOCATE(substr,str,pos) Onde
str é a string, substr é a substring a ser encontrada e pos é a posição para iniciar a pesquisa. A diferença entre as duas funções pode ser resumida da seguinte forma:
- O
LOCATE()função aceita os mesmos dois argumentos queINSTR()aceita, mas na ordem inversa.
- O
LOCATE()A função aceita um terceiro argumento opcional para especificar a posição inicial da pesquisa. OINSTR()função não aceita tal argumento.
Então
LOCATE() fornece funcionalidade extra que INSTR() não fornece. Exemplo 1 – A primeira diferença
Aqui está um exemplo que mostra a ordem inversa em que as duas funções aceitam seus argumentos:
SELECT
INSTR('Disconnect', 'con'),
LOCATE('con', 'Disconnect'); Resultado:
+----------------------------+-----------------------------+
| INSTR('Disconnect', 'con') | LOCATE('con', 'Disconnect') |
+----------------------------+-----------------------------+
| 4 | 4 |
+----------------------------+-----------------------------+ Exemplo 2 – A segunda diferença
Aqui está um exemplo que mostra a funcionalidade extra que
LOCATE() fornece sobre INSTR() :SELECT
INSTR('My cat is a good cat', 'cat') AS "INSTR()",
LOCATE('cat', 'My cat is a good cat') AS "LOCATE()",
LOCATE('cat', 'My cat is a good cat', 10) AS "LOCATE() with 3rd Argument"; Resultado:
+---------+----------+----------------------------+ | INSTR() | LOCATE() | LOCATE() with 3rd Argument | +---------+----------+----------------------------+ | 4 | 4 | 18 | +---------+----------+----------------------------+
Este exemplo destaca o fato de que o
LOCATE() A função nos fornece um terceiro argumento opcional. Esse argumento nos permite especificar uma posição inicial para a pesquisa, o que significa que não estamos limitados apenas à primeira ocorrência em toda a string.