2011-01-03 4 views
1

ないこの:
"height like '%1%' or height like '%2%' or height like '%5%'" 

つ以上のそれを乾燥させるためにしようと、SQLのような条件での一つの属性のバインディング

はこの1つのだけの属性のバインディングが多いと言います。

これらは順序通りではなく、ランダムです。

このSQLを簡略化するにはどうすればよいですか?このような

何か:

"height like ('%2%' or '%1%' or '%5%') 

コードは一例です。

私は注射の提案を探していません。

+0

どのデータベースとバージョンですか? –

+1

コードを編集して、最初のSQL文が意味をなさない。 – egrunin

+0

どうもありがとうございました。 – s84

答えて

1

LIKEのINに相当するものはありません。あなたの最初の方法は正しいアプローチです。

WHERE (height LIKE '%foo%' OR height LIKE '%bar%' OR height LIKE '%baz%') 

これは遅くなることに注意してください。代わりに全文検索を見たいかもしれません。

+0

右、solrはherokuにあり、また、スフィンクスもありますが、herokuが使用したいと思っているようなsolrがあります。 – s84

0

私はオプションでSQLがあなたの問題を解決すると思います。 ( '%2%'、 '%1%'、 '%5%')

高さは、これはあなたの変数は、常に値を持っているので、あなたのデフォルトはDBで有効な値であることを確認します想定して!

+0

[高さ '%2%']は[高さ= '%2']と等価ではありません – Ronnis

+0

どういう違いがありますか? – s84

+0

あなたの権利は、すぐに私はPHPの考えを持っていたし、パーセントはサーバー側言語の一部だった。 – Limey

関連する問題