I am *not* sure this is right but might be worth playing with-
use strict; use warnings; use YAML; use SQL::Abstract; my $original = 'A*|B|C*|D|Z'; my @refs = split /\|/, $original; my ( %like, %in ); for my $ref ( @refs ) { $ref =~ s/\*\z/%/; $ref =~ /%\z/ ? $like{$ref}++ : $in{$ref}++; } # See what we've got so far- print Dump \(%like, %in); my $sqla = SQL::Abstract->new(); my @doc_like; push @doc_like, doc => { -like => $_ } for keys %like; my ( $stmt, @bind ) = $sqla ->where({ -or => [ doc => { -in => [ keys %in ] }, @doc_like ] }); print $stmt, $/; print join(",", @bind), $/; # --- A%: 1 C%: 1 --- B: 1 D: 1 Z: 1 WHERE ( ( doc IN ( ?, ?, ? ) OR doc LIKE ? OR doc LIKE ? ) ) Z,D,B,C%,A%
You get semi-bumped on new posts and the user you're responding to gets a notice. :) Create an account and you'll get them too.
In reply to Re^3: difficulty with SQL::Abstract '-in' clauses
by Your Mother
in thread difficulty with SQL::Abstract '-in' clauses
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |