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.
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)
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 ?
Obrigado pela contribuição, Hilton! 😉
Vou abordar uma solução de busca mais adequada em bancos de dados grandes, em outro artigo.
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.
Me sinto honrado. 😉
O artigo “introdução à buscas FULLTEXT” ensina a fazer buscas rápidas e eficientes dentro de grandes volumes de dados.
O assunto é abordado também nestes outros textos.