Using Drupal 7, and I’m trying to get results from the database using the LIKE command but it doesn’t recognize my wildcards. I’m not sure if this is even a Drupal issue, or if I’m doing something wrong. Anyways here’s an example of the data I’m trying to match, along with my patters
Data to Match
a:2:{i:1;s:2:"17";i:2;s:1:"3";}
My like Queries
$pattern1 = 'a:2:{i:1;s:2:"17";i:2;s:1:"%";}'//works
$pattern2 = 'a:2:{i:1;s:1:"%";i:2;s:1:"3";}'//fails
$result = db_query(
"
SELECT pa.nid, pa.model, pa.combination
FROM {$Product_Adjustments} pa
WHERE pa.combination LIKE :pattern
",
array(
':pattern' => $pattern1
)
);
Additionally, I’ve tried the ‘_’ wildcard, but that doesn’t bring anything up either
Are you sure the pattern is correct? Notice pattern 1, the first string is 2 long, and in pattern 2 you’re looking for one that’s only 1 long. Are you sure that’s right? Are the lengths of the individual pieces of that serialized data predictable enough to even query this way? It seems unlikely, and you’ll probably have to store some normalized data instead.