0

使用 Drupal 7,我正在尝试使用 LIKE 命令从数据库中获取结果,但它无法识别我的通配符。我不确定这是否是 Drupal 问题,或者我做错了什么。无论如何,这是我试图匹配的数据的一个例子,以及我的模式

匹配的数据

a:2:{i:1;s:2:"17";i:2;s:1:"3";}

我喜欢的查询

$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
    )
);

此外,我尝试了 '_' 通配符,但这也没有带来任何东西

4

1 回答 1

1

你确定模式是正确的?注意模式 1,第一个字符串是 2 长,而在模式 2 中,您正在寻找一个只有 1 长的字符串。你确定这是对的吗?该序列化数据的各个片段的长度是否足以预测甚至可以以这种方式查询?这似乎不太可能,您可能不得不存储一些标准化数据。

于 2012-08-23T21:56:16.797 回答