my $sql = " select * from ( select * from qatest where ser_app_name like upper('%$mainsearch%') or att_data like upper('%$mainsearch%') or mrserver like upper('%$mainsearch%') or owner_user like upper('%$mainsearch%') or lan_serv like upper('%$mainsearch%') or s_contact like upper('%$mainsearch%') or s_provider like upper('%$mainsearch%') or prod_deliv like upper('%$mainsearch%') order by ser_app_name ASC ) where rownum < 31 "; print "Debug> sql is:\n", "-" x 70, $sql, "\n", "-" x 70, "\n"; my $st = $dbh->prepare($sql); $st->execute(); #### my $like_string = "like upper('%$mainsearch%') "; my @fields = qw( att_data mrserver owner_user lan_serv s_contact s_provider prod_deliv ); my $like_clause = "where ser_app_name $like_string"; map { $like_clause .= " or $_ like $like_string" } @fields; # The simplified sql statement .... my $sql = " select * from ( select * from qatest $like_clause order by ser_app_name ASC ) where rownum < 31 ";