http://www.perlmonks.org?node_id=1045641


in reply to Re^2: Perl script to decode SQL ENCODE function
in thread Perl script to decode MySQL ENCODE() function

Could you give an actual code example, i'm not sure what you're saying. It appears from the MySQL documentation that the ENCODE function requires 2 parameters, but you haven't mentioned that. Anyway, likely the best way is to just connect to MySQL and perform the operation, for example:

use strict; use warnings; use DBI; my $dsn = 'DBI:mysql:host=localhost'; my $dbh = DBI->connect($dsn); my $sth = $dbh->prepare("SELECT DECODE('encodedcontent', 'secretvalue' +)"); $sth->execute; my $decoded = $sth->fetchrow; print $decoded;

Replies are listed 'Best First'.
Re^4: Perl script to decode SQL ENCODE function
by Martin90 (Sexton) on Jul 22, 2013 at 20:14 UTC
    There is problem: SELECT ENCODE('test','test') returns ?üÔÚ but SELECT DECODE('?üÔÚ','test') doesn't return test but ttZ¦ô what is wrong ?

      Really can't say. Maybe a character encoding problem if you're copy-and-pasting. The following code works here:

      use strict; use warnings; use DBI; my $db = DBI->connect('DBI:mysql:host=localhost'); my ($encoded) = $db->selectrow_array("SELECT ENCODE('ToBeHidden', 'sec +retvalue')"); my ($decoded) = $db->selectrow_array("SELECT DECODE('$encoded', 'secre +tvalue')"); print $decoded; # prints --> ToBeHidden
        Yes, my mistake I copied binary string, shame ;) Thanks for help.