Categories
Banco de dados Tutoriais

Como pesquisar sequências de caracteres dentro de strings, com a função LOCATE, no MySQL

Receita para encontrar palavras ou sequências de caracteres dentro de um banco de dados MySQL com a função LOCATE ou substrings dentro de strings.

A função LOCATE() do MySQL permite encontrar sequência dentro de uma cadeia de caracteres. Ou seja, a função pode ser usada para identificar uma substring dentro de uma string.
A função LOCATE() recebe dois argumentos: a substring que você deseja encontrar e o texto dentro do qual ela será procurada.
Capa do tutorial - como encontrar sequências de caracteres no MySQL
Se a busca for bem sucedida, a função retorna a posição em que a substring desejada se encontra ou o valor 0 (zero), caso ela não esteja presente.
Opcionalmente, é possível fornecer um terceiro argumento à função — para indicar em que posição, dentro da string principal, a busca deve ter início.

Exemplos de uso da função locate no MySQL

Neste primeiro exemplo, vou mostrar como criar uma variável no MySQL e, em seguida, como efetuar uma busca dentro dela com a função LOCATE().

SET @minhavar="O mysqladmin é um cliente para executar operações administrativas no MySQL. Ele pode ser usado para verificar a configuração do servidor e seu estado atual, além de criar e apagar bancos de dados - entre outras coisas.";
SELECT LOCATE("cliente",@minhavar);
+-----------------------------+
| LOCATE("cliente",@minhavar) |
+-----------------------------+
|                          19 |
+-----------------------------+
1 row in set (0.00 sec)

A busca efetuada é insensível a caixa das letras, ou seja, tanto faz procurar por “cliente” como “ClIEnTE” — para a função LOCATE(), as duas strings são a mesma coisa.

A função LOCATE() era sensível à caixa das letras nas versões do MySQL anteriores a 4.0.0
— MySQL Cookbook by Paul DuBois

O exemplo abaixo mostra como fazer a busca dentro do banco de dados:

SELECT CidadeCliente FROM ClientesCidades WHERE LOCATE('co',CidadeCliente);

O comando, acima, ordena uma pesquisa dentro da tabela ClientesCidades por CidadeCliente, em cujo texto, tenha a substring “co”. Veja o resultado:

+------------------------+
| CidadeCliente          |
+------------------------+
| Girifalco              |
| San Costantino Calabro |
| Rocourt                |
| Beaconsfield           |
| Rachecourt             |
| Vancouver              |
| Lacombe                |
| Port Lincoln           |
| Corroy-le-Grand        |
| Recco                  |
| Coalhurst              |
| San Demetrio Corone    |
| Lakeland County        |
| Beaconsfield           |
| Colonnella             |
+------------------------+
15 rows in set (0.01 sec)

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

5 replies on “Como pesquisar sequências de caracteres dentro de strings, com a função LOCATE, no MySQL”

Prezado amigo e mestre Elias Praciano, agradeço mais uma colaboração bacana, prática, concisa e importante.

No entanto, gostaria de perguntar se, para bancos de dados muito grandes, essa busca não pode ser muito lenta ?

Prezado mestre Praciano, a qualidade de suas contribuições é inegável.
Aguardo seus próximos artigos.
Parabéns pelo trabalho, tanto em consistência, quanto em qualidade, quanto em continuidade.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.