If you typed that in, would your database accept it? That doesn't look valid to me. I would expect something more like:
WHERE ... AND ((CLName LIKE 'A%') OR (CLName in ('MET-CL1','BDO-CL1'))
The following will divide the provided values into two arrays, @pre to hold prefixes, @words to hold complete values. It assumes one letter by itself is a prefix. Anything else is a complete value.
if ($clnm) { @parts = split /,/,$clnm; map { m/\'\w\'/ ? push @pre, $_ : push @words, $_ } @parts;
Functions like join can be used to format the LIKE clause and the IN clause. Here's one way to construct the IN clause:
$in_clause = sprintf "( CLName IN (%s) )", join ',',@words;
Then you will need some logic to figure out what connecting terms (AND, OR) you will need.
In reply to Re^7: wild cards in Vertica
by GotToBTru
in thread wild cards in Vertica
by pragov
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |