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 に答える