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

Italo Gonçales italo.goncales at gmail.com
Wed Sep 30 07:30:17 PDT 2015


Entendi Mantovani!

É bom saber disso, pois estou migrando algumas coisas aqui para Catalyst, e
acabo me deparando com esses casos. Agora não vou mais travar com esse tipo
de coisas, espero.

Obrigado!





Em 30 de setembro de 2015 11:21, Daniel de Oliveira Mantovani <
daniel.oliveira.mantovani at gmail.com> escreveu:

> Italo, quando você precisar de alguma função que não seja suportada pela
> estrutura de dados do DBIC, você usa \['']. Geralmente são funções
> específicas do banco, como as relacionadas à data.
>
>
> https://github.com/mantovani/IBM-MDM-LogAnalyzer/blob/master/lib/IBM/MDM/LogAnalyzer/Schema/ResultSet/MdmPerformance.pm#L94
>
> 2015-09-30 11:10 GMT-03:00 Italo Gonçales <italo.goncales at gmail.com>:
>
>> Após uma ajuda do Mantovani e do Ilmari no canal #dbix-class, obtive a
>> seguinte solução:
>> $card_rs->search(\['? RLIKE atr',
>> '3B7F1300008031C0521234640569937083819000' ]);
>>
>> Segundo o ilmari: geralmente se você precisa de alguma coisa além do
>> identificador ( column name )  no lado esquerdo, você precisa usar \[] ou \"
>>
>> A saída ficou a seguinte:
>>
>> SELECT me.id_atr, me.atr, me.name, me.eletric_test, me.code, me.status,
>> me.microsiga1, me.microsiga2, me.observation FROM card_atr me WHERE ( ?
>> RLIKE atr ): '3B7F1300008031C0521234640569937083819000'
>>
>> E encontrou os dados que eu precisava.
>>
>> Obrigado a todos pela atenção!
>>
>> Em 30 de setembro de 2015 10:55, Italo Gonçales <italo.goncales at gmail.com
>> > escreveu:
>>
>>> Utilizando a estrutura: use DDP; p $_ for $card_rs->search({ "atr" => {
>>> "rlike" => '3B7F1300008031C0529999640569937083819000' } });
>>>
>>> Obtive:
>>> [devel at develvm bin]$ DBIC_TRACE=1 perl findatr.pl
>>> SELECT me.id_atr, me.atr, me.name, me.eletric_test, me.code, me.status,
>>> me.microsiga1, me.microsiga2, me.observation FROM card_atr me WHERE ( atr
>>> RLIKE ? ): '3B7F1300008031C0529999640569937083819000'
>>>
>>> Em 30 de setembro de 2015 10:42, Daniel de Oliveira Mantovani <
>>> daniel.oliveira.mantovani at gmail.com> escreveu:
>>>
>>>> Me falaram no canal para você tentar isso,
>>>> search({ "atr" => { "rlike" =>
>>>> '3B7F1300008031C0529999640569937083819000' } })
>>>>
>>>> 2015-09-30 10:30 GMT-03:00 Italo Gonçales <italo.goncales at gmail.com>:
>>>>
>>>>> O código está assim:
>>>>>
>>>>> my $regex = '3B7F1300008031C0529999640569937083819000';
>>>>> use DDP; p $_ for $card_rs->search({ $regex => { RLIKE => 'atr' }
>>>>> })->all;
>>>>>
>>>>> Porém, invertendo a ordem da estrutura para ` use DDP; p $_ for
>>>>> $card_rs->search({ atr => { RLIKE => $regex } })->all; `, a saída fica:
>>>>>
>>>>> [devel at develvm bin]$ DBIC_TRACE=1 perl findatr.pl
>>>>> SELECT me.id_atr, me.atr, me.name, me.eletric_test, me.code,
>>>>> me.status, me.microsiga1, me.microsiga2, me.observation FROM card_atr me
>>>>> WHERE ( atr RLIKE ? ): '3B7F1300008031C0529999640569937083819000'
>>>>>
>>>>>
>>>>>
>>>>> Em 30 de setembro de 2015 10:26, Daniel de Oliveira Mantovani <
>>>>> daniel.oliveira.mantovani at gmail.com> escreveu:
>>>>>
>>>>>> Italo,
>>>>>>
>>>>>> qual estrutura no dbic vc está usando que o resultado é "SELECT
>>>>>> me.id_atr, me.atr, me.name, me.eletric_test, me.code, me.status,
>>>>>> me.microsiga1, me.microsiga2, me.observation FROM card_atr me WHERE (
>>>>>> 3B7F1300008031C0529999640569937083819000 RLIKE ? ): 'atr'" ?
>>>>>>
>>>>>> 2015-09-30 10:14 GMT-03:00 Italo Gonçales <italo.goncales at gmail.com>:
>>>>>>
>>>>>>> olá Carneiro,
>>>>>>>
>>>>>>> É porque a atr, é um dado que vem do chip do cartão, estou lendo o
>>>>>>> mesmo a partir de uma leitora de smartcard, e buscando as informações sobre
>>>>>>> esta atr no banco.
>>>>>>>
>>>>>>> Em 30 de setembro de 2015 10:09, Andre Carneiro <
>>>>>>> andregarciacarneiro at gmail.com> escreveu:
>>>>>>>
>>>>>>>> Estou tentando entender porque voce está tentando buscar pelo
>>>>>>>> conteúdo de 'atr' e nao pelo conteúdo de 'name'. De qq forma, creio que
>>>>>>>> voce pode tentar usar RLIKE do próprio Mysql como o Vinciguerra sugeriu(ele
>>>>>>>> foi mais rápido que eu... :P). Dependendo do tamanho dessa tabela,
>>>>>>>> podería-se pensar em usar FTS, embora não pareça ser o caso.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Atenciosamente
>>>>>>>>
>>>>>>>> 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
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> André Garcia Carneiro
>>>>>>>> Software Engineer
>>>>>>>> (11)982907780
>>>>>>>>
>>>>>>>> =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
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>>
>>>>>>> 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
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Thank you very much!
>>>>>>
>>>>>> -dom
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Daniel de Oliveira Mantovani
>>>>>> Business Analytic Specialist
>>>>>> Perl Evangelist /Astrophysics hobbyist.
>>>>>> +55 11 9 8538-9897
>>>>>> XOXO
>>>>>>
>>>>>> =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
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>>
>>>>> 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
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Thank you very much!
>>>>
>>>> -dom
>>>>
>>>> --
>>>>
>>>> Daniel de Oliveira Mantovani
>>>> Business Analytic Specialist
>>>> Perl Evangelist /Astrophysics hobbyist.
>>>> +55 11 9 8538-9897
>>>> XOXO
>>>>
>>>> =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
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>>
>>> Att,
>>>
>>> Italo Gonçales
>>> Perl Developer at Morpho
>>> +55 12 98134 0318
>>>
>>
>>
>>
>> --
>>
>>
>> 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
>>
>>
>
>
> --
> Thank you very much!
>
> -dom
>
> --
>
> Daniel de Oliveira Mantovani
> Business Analytic Specialist
> Perl Evangelist /Astrophysics hobbyist.
> +55 11 9 8538-9897
> XOXO
>
> =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
>
>


-- 


Att,

Italo Gonçales
Perl Developer at Morpho
+55 12 98134 0318
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20150930/a8a421c5/attachment-0001.html>


More information about the SaoPaulo-pm mailing list