Função LOCATE() do MySQL

Resumo : neste tutorial, você aprenderá como usar a LOCATE()função MySQL para encontrar a posição de uma substring dentro de uma determinada string.

Introdução à função MySQL LOCATE()

A LOCATE()função retorna a posição de uma substring dentro de uma determinada string. A LOCATE()função possui a seguinte sintaxe:

LOCATE(substring, string, position)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • substring: a substring que você deseja localizar na string principal.
  • string: A string principal na qual você deseja encontrar a substring.
  • position: a posição na string principal onde você deseja iniciar a pesquisa pela substring. O positioné opcional. Se você omitir, a pesquisa começa no início da string.

Se a LOCATE()função não conseguir encontrar a substring na string que começa na posição, ela retornará 0.

Se algum argumento for NULL, a LOCATE()função retornará NULL.

Exemplos de funções MySQL LOCATE()

Vejamos alguns exemplos de uso da LOCATE()função.

1) Exemplo simples da função MySQL LOCATE()

O exemplo a seguir usa a LOCATE()função para encontrar a posição da substring 'MySQL'na string 'Hello, MySQL':

SELECT 
  LOCATE('MySQL', 'Hello, MySQL') position;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+----------+
| position |
+----------+
|        8 |
+----------+
1 row in set (0.01 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Neste exemplo, a LOCATE()função retorna 8 indicando que a string 'MySQL'começa na 8ª posição da string 'Hello, MySQL'.

Como não usamos o positionparâmetro, a LOCATE()função começa a procurar a substring desde o início da string.

2) Usando a função LOCATE() usando o parâmetro position

O exemplo a seguir usa a LOCATEfunção para encontrar a substring "know"na string “ You don't know what you don't know"começando na posição 12:

SELECT 
  LOCATE(
    'know', "You don't know what you don't know", 
    12
  ) position;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+----------+
| position |
+----------+
|       31 |
+----------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A string principal "You don't know what you don't know"possui duas palavras "know". A primeira substring "know"começa na posição 11 e a segunda começa na posição 31 da string principal.

Como usamos o valor 12 para o positionargumento, a LOCATE()função começa a procurar a substring "know"na posição 12 e a encontra na posição 31.

3) Tratamento de casos sem correspondência

Se a substring não for encontrada na string principal, a LOCATE()função retornará 0. Por exemplo:

SELECT 
  LOCATE('alien', 'earth');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+--------------------------+
| LOCATE('alien', 'earth') |
+--------------------------+
|                        0 |
+--------------------------+
1 row in set (0.00 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A LOCATE()função retorna 0 porque não consegue encontrar a string "alien"na string "earth".

4) Usando a função LOCATE() com os dados da tabela

Usaremos a productstabela do banco de dados de exemplo :

Função MySQL LOCATE() - Tabela de exemplo

O exemplo a seguir usa a LOCATE()função para localizar o produto que contém a palavra "Harley Davidson"na descrição do produto:

SELECT 
  productName 
FROM 
  products 
WHERE 
  LOCATE(
    "Harley Davidson", productDescription
  ) > 0;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+--------------------------------------+
| productName                          |
+--------------------------------------+
| 2003 Harley-Davidson Eagle Drag Bike |
+--------------------------------------+
1 row in set (0.01 sec)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Resumo

  • Use a função MySQL LOCATE()para encontrar a posição de uma substring dentro de uma determinada string começando em uma posição especificada.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *