[SP-pm] Encontrar valor em regex armazenada em banco de dados

Daniel Vinciguerra daniel.vinciguerra at bivee.com.br
Wed Sep 30 06:01:15 PDT 2015


Fala Italo,

Sugiro que vc dê uma habilitada no DBIC_TRACE para ver a saída antes de
tudo...

Não consigo simular o seu cenário mas testei com um banco meu e em outro
contexto e...

->search({ email => {-rlike => 'foo at .*'} })->single;
Query: SELECT me.id, me.name, me.email, me.password, me.active, me.change,
me.token, me.last_access, me.updated, me.created FROM user me WHERE ( email
RLIKE ? ): 'foo at .*'

Isso me diz que aparentemente sua query com -rlike esta OK

Você também pode fazer o seguinte:

->search({ email => \["RLIKE 'foo at .*'"] })->single;
Query: SELECT me.id, me.name, me.email, me.password, me.active, me.change,
me.token, me.last_access, me.updated, me.created FROM user me WHERE ( email
RLIKE 'foo at .*' ):


Abs,




*Daniel Vinciguerra*
Web Solutions Architect and founder at Bivee
Cel: +55 (47) 9270-6171

*ATENÇÃO/ATTENTION:*
Este e-mail contém informações confidenciais e seu conteúdo é dirigido ao
uso do indivíduo ou da entidade mencionados acima. Se você recebeu esta
mensagem por engano, por favor, notifique o remetente e remova-o
imediatamente.


This e-mail contains confidential information intended only for the use of
the individual or entity named above. If you are not the intended
recipient, please notify the sender and delete it immediately.

2015-09-30 8:38 GMT-03:00 Italo Gonçales <italo.goncales at gmail.com>:

> Bom dia!
>
> Estou migrando uma aplicação java stand alone para WebService usando
> Catalyst e MySQL, quando me deparei com um caso atípico do meu dia a dia. A
> antiga base de dado ( em txt ) da aplicação java possui expressões
> regulares nas chaves que estou utilizando para a busca ( e que é a única
> que eu tenho ).
>
> Gostaria de saber se há alguma maneira de buscar um valor que corresponda
> à regex armazenada no banco de dados?
>
> Testei pelo MySQL e funcionou, mas não consigo fazer o mesmo select no
> perl.
>
> Segue busca de exemplo:
>
> mysql> SELECT * FROM card where '3B45978551FE119864' RLIKE atr;
>
> +----------------------------------+----------------------------------------+
> | atr                                      | name
>               |
>
> +-----------------------------------+---------------------------------------+
> | 3B[0-9]{4}8551FE119864  | S12-468                                  |
>
> Tentei usar o search_like, search com '-rlike' e search com '-like', mas
> nada funcionou. Tentei inverter na query do search também, mas não deu
> muito certo.
>
> Tentativas:
> $card_rs->search({ atr => { -like => $atr } })->single;
>
> $card_rs->search({ atr => { -rlike => $atr } })->single;
>
> $card_rs->search({ $atr => { -rlike => atr } })->single;
>
> Gostaria de saber se há alguma outra maneira de fazer essa busca no perl.
>
> Obrigado!
>
> --
>
> Att,
>
> Italo Gonçales
> Perl Developer at Morpho
> +55 12 98134 0318
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20150930/3cc5425e/attachment-0001.html>


More information about the SaoPaulo-pm mailing list