Cerrito 0 Denunciar post Postado Agosto 10, 2004 Expressões regulares no MySQLPessoal, as expressões regulares no MySQL são uma maneira poderosa de especificar um pesquisa complexa.O MySQL usa a implementação do Henry Spencer de expressões regulares, a qual está emconformidade com o POSIX 1003.2. MySQL usa a versão extendida.Um exemplo de como podemos usar as expressões regulares:Para encontrar nomes começando com ‘m’, utilize ‘^’ para combinar com o começo do nome:mysql> SELECT * FROM clientes WHERE nome REGEXP "^m";Antes da versão 3.23.4 do MySQL, REGEXP era caso sensitivo.Ou seja se na nossa tabela o unico nome cadastrado fosse "Marcio", nossa consulta não iria retornar nadaNeste caso, para combinar letras ‘m’ maiusculas e minusculas, você utilizaria a seguinte consultamysql> SELECT * FROM clientes WHERE nome REGEXP "^[mM]";A partir do MySQL 3.23.4, se você realmente deseja forçar uma comparação REGEXP comcaso sensitivo, utilize a palavra-chave BINARY para tornar uma das strings em uma stringbinárias. Esta consulta irá combinar somente com ‘b’s minusculos no começo de um nome:mysql> SELECT * FROM clientes WHERE nome REGEXP BINARY "^m";Tambem podemos usar as expressões regulares para encontrar nomes, ou palavras terminadas com algum caracter especifico, mais ou menos assim:O coringa ‘$’ indica no final da palavra...mysql> SELECT * FROM clientes WHERE nome REGEXP "io$";Encontrando nomes que contenham um caracter especifico em qualquer parte do mesmo:mysql> SELECT * FROM clientes WHERE nome REGEXP "m"; Podemos usar as expressões para encontrar palavras com um certo numero de caracteresseis por exemplo:Caracters coringas usados:No inicio "^" e "$" no fim... E entre eles "." cada "." refere-se a uma letra, então no nosso caso ficaria assim mysql> SELECT * FROM clientes WHERE nome REGEXP "^......$";Você pode tambem escrever a consulta anterior utilizando o operador "{n}" “repete-n-vezes”:mysql> SELECT * FROM clientes WHERE nomes REGEXP "^.{5}$";Agora vamos elaborar algo um pouco mais complicado:mysql> SELECT * FROM clientes WHERE nome REGEXP M[ar]*s";intendendo o que ele faz...Procura por uma palavra que começe com "M" que tenha um numero qualquer de caracteres "a" e "r" e que termine com "s"pessoal assim que tiver tempo irei acrescentar mais exemplos de expressões regulares...abraços a todos.Marcio Compartilhar este post Link para o post Compartilhar em outros sites
turok 0 Denunciar post Postado Novembro 12, 2004 E se quizer selecionar um intervalo numérico, ex: datas do dia 07 ao 13 por exemplo? tente isso mas não funciona: SELECT * FROM tabela WHERE campo REGEXP "[7-13]$"; Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Maio 15, 2005 Só pra curiosidade... A palavra REGEX pode ser trocada por RLIKE. ;) Se o campo for DATE / DATETIME Pode ser feito assim: SELECT * FROM tabela WHERE (DAY(campo) >= 7 AND DAY(campo) <= 13)Assim ele pega somente a parte do dia (DAY) no valor do campo e compara se é maior ou igual a sete e menor ou igual a 13. Se você quiser também que seja só deste Mês e desde ano coloque: MONTH(campo) = MONTH(CURDATE()) AND YEAR(campo) = YEAR(CURDATE())Acrescentando a outra query... Compartilhar este post Link para o post Compartilhar em outros sites
rastael 0 Denunciar post Postado Abril 30, 2006 Como ficaria a string para eu buscar alguma palavra que comece com o conteudo da variável $palavra_chaveeu estava fazendoSELECT * FROM tabela WHERE '$palavra_chave%'mas não funciona, ele traza as palavras que tem a $palavra_chave no meio da palavra. Compartilhar este post Link para o post Compartilhar em outros sites
Eclesiastes 2 Denunciar post Postado Maio 19, 2006 Exemplo: "SELECT * FROM tabela WHERE campo REGEXP '^". $palavra_chave ."' Compartilhar este post Link para o post Compartilhar em outros sites