The SQL operator LIKE is always used for filters when searching for
items.
If the filter is a select, we should search for an exact match.
That way we avoid problematic search like "%NFIC%" and "%FIC%" (one
includes the other one).
Test plan:
- Make sure you have collection codes 'Fiction' and 'Non-fiction'
- Do an item search
- Filter column 'Collection', select 'Fiction'
- Result: Column contains items from Fiction only
Followed test plan, works as expected.
Signed-off-by: Marc VĂ©ron <veron@veron.ch>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
my @words = split /\s+/, $sSearch;
foreach my $word (@words) {
push @f, $columns[$i];
- push @q, "%$word%";
- push @op, 'like';
push @c, 'and';
+
+ if ( grep /^$columns[$i]$/, qw( ccode homebranch holdingbranch location notforloan ) ) {
+ push @q, "$word";
+ push @op, '=';
+ } else {
+ push @q, "%$word%";
+ push @op, 'like';
+ }
}
}
}