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' ... }