Enão, eu não tenho a regex como valor, e sim o valor completo da string. A regex está armazenada no banco de dados:
mysql> select * from card_atr where atr RLIKE '3B7F1300008031C0529999640569937083819000'; Empty set (0,00 sec) mysql> select * from card_atr where '3B7F1300008031C0529999640569937083819000' rlike atr; +--------+----------------------------------------------------------------------+-------------------------------------------------------+ | id_atr | atr | name | +--------+----------------------------------------------------------------------+-------------------------------------------------------+ | 69 | 3B7F1300008031C052[0-9]{4}640569937083819000 | S12-265 | +--------+----------------------------------------------+-----------------------+------------------------------------------------------+ Seguindo o exemplo do email do Hernan, a saída com DBIC_TRACE ativado foi: [devel@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 ( 3B7F1300008031C0529999640569937083819000 RLIKE ? ): 'atr' DBI Exception: DBD::mysql::st execute failed: Unknown column '3B7F1300008031C0529999640569937083819000' in 'where clause' [for Statement "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 ? )" with ParamValues: 0='atr'] at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Schema.pm line 1081. DBIx::Class::Schema::throw_exception(SmartCardWebAtr::Schema=HASH(0x2415cf0), "DBI Exception: DBD::mysql::st execute failed: Unknown column "...) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage.pm line 112 DBIx::Class::Storage::throw_exception(DBIx::Class::Storage::DBI::mysql=HASH(0x24164a0), "DBI Exception: DBD::mysql::st execute failed: Unknown column "...) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/DBI.pm line 1466 DBIx::Class::Storage::DBI::__ANON__("DBD::mysql::st execute failed: Unknown column '3B7F1300008031"..., DBI::st=HASH(0x2a573c0), undef) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/DBI.pm line 1834 DBIx::Class::Storage::DBI::_dbh_execute(DBIx::Class::Storage::DBI::mysql=HASH(0x24164a0), DBI::db=HASH(0x2a089e0), "SELECT me.id_atr, me.atr, me.name, me.eletric_test, me.code, "..., ARRAY(0x2a31338), ARRAY(0x265e6c0)) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/DBI.pm line 849 DBIx::Class::Storage::DBI::__ANON__() called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/BlockRunner.pm line 136 DBIx::Class::Storage::BlockRunner::try {...} () called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/Try/Tiny.pm line 76 eval {...} called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/Try/Tiny.pm line 72 Try::Tiny::try(CODE(0x2a3c558), Try::Tiny::Catch=REF(0x28c0020)) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/BlockRunner.pm line 140 DBIx::Class::Storage::BlockRunner::__ANON__() called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/Context/Preserve.pm line 32 Context::Preserve::preserve_context(CODE(0x2a097c0), "replace", CODE(0x2a35788)) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/BlockRunner.pm line 219 DBIx::Class::Storage::BlockRunner::_run(DBIx::Class::Storage::BlockRunner=HASH(0x2a2d3c0), CODE(0x27bcdf8)) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/BlockRunner.pm line 111 DBIx::Class::Storage::BlockRunner::run(DBIx::Class::Storage::BlockRunner=HASH(0x2a2d3c0), CODE(0x27bcdf8)) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/DBI.pm line 850 DBIx::Class::Storage::DBI::dbh_do(undef, undef, "SELECT me.id_atr, me.atr, me.name, me.eletric_test, me.code, "..., ARRAY(0x2a31338), ARRAY(0x265e6c0)) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/DBI.pm line 1815 DBIx::Class::Storage::DBI::_execute(DBIx::Class::Storage::DBI::mysql=HASH(0x24164a0), "select", ARRAY(0x1a53ea8), ARRAY(0x1ba6f30), HASH(0xb8c038), HASH(0x28e1458)) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/DBI.pm line 2376 DBIx::Class::Storage::DBI::_select(DBIx::Class::Storage::DBI::mysql=HASH(0x24164a0), ARRAY(0x1a53ea8), ARRAY(0x1ba6f30), HASH(0xb8c038), HASH(0x1be6788)) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/Storage/DBI/Cursor.pm line 178 DBIx::Class::Storage::DBI::Cursor::all(DBIx::Class::Storage::DBI::Cursor=HASH(0x26d2068)) called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/ResultSet.pm line 1311 DBIx::Class::ResultSet::_construct_results(DBIx::Class::ResultSet=HASH(0x1be6770), "fetch_all") called at /home/devel/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/DBIx/Class/ResultSet.pm line 1827 DBIx::Class::ResultSet::all(DBIx::Class::ResultSet=HASH(0x1be6770)) called at findatr.pl line 19 Em 30 de setembro de 2015 10:01, Daniel Vinciguerra < daniel.vincigue...@bivee.com.br> escreveu: > 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@.*'} })->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@.*' > > Isso me diz que aparentemente sua query com -rlike esta OK > > Você também pode fazer o seguinte: > > ->search({ email => \["RLIKE 'foo@.*'"] })->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@.*' ): > > > 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.gonca...@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@pm.org >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >> =end disclaimer >> >> > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@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@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer