in reply to dbi, placeholder and postgres regular expression problem
You can just concatenate the placeholder, like so:
where b ~* ( E'.{2,4}' || ? )
(here is the test I did:)
sub re { # $sql = "SELECT a FROM table WHERE b ~* '.{2,4}?' "; # $sth = $dbh->prepare($sql); # $sth->execute($placeholder); my ($dbh) = @_; $dbh->do("set search_path to public"); # $dbh->do("drop table if exists regexjunk;"); -- uncomment if +needed $dbh->do("create table regexjunk (a text,b text);"); $dbh->do(" -- insert 4 rows: insert into regexjunk (a,b) values ('one' , 'FOXxxxxxx') , ('two' , 'xxxxFOXxx') , ('three', 'xFOXxxxxx') , ('four' , 'xxxxxFOXx') ; "); my $sql = "SELECT a FROM regexjunk WHERE b ~* ( E'.{2,4}' || ? + ) "; my $sth = $dbh->prepare($sql); my $placeholder = 'FOX'; $sth->execute($placeholder); while (my $rrow = $sth->fetchrow_arrayref) { print $rrow->[0], "\n"; } -- yields 'two' and 'four' ... }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: dbi, placeholder and postgres regular expression problem
by zdzieblo (Acolyte) on May 09, 2008 at 00:12 UTC | |
by erix (Prior) on May 09, 2008 at 00:21 UTC |