私は質問があり、そのシンプルなものがあります(Gurusのために)。動的MySQLストアドプロシージャの句
SQLページングクラスをC#からMySQLストアドプロシージャに転置しています。私のC#自家製オブジェクトでは、クエリは条件に基づいて動的に構築されます。例:
if(keywords is not null)
{
whereClause += "WHERE description LIKE '%keywords%'"
}
if(price is not null)
{
whereClause += "AND price = '%price%'"
}
....今
string query = "SELECT col1, col2 FROM tblThreads " + whereClause
、私の質問は:どのように私は次のようにMySQLでの動的where句をしますか?あるいは、もしそれらのパラメータに何も入力しなければ、ストアドプロシージャでMySQLにそれらをスキップする方法を教えてください。 IE:
SELECT col1, col2 FROM tblThreads
これらのパラメータがnullの場合、
SELECT col1, col2 FROM tblThreads WHERE (IS NULL @keywords OR description like '%@keywords%'
??
ありがとうございます。
私はこの1つが好きです。私は、私が "重い" SQL文の解析、つまりプログラム的にAND節を取り除かなければならないときに、これを自分で使います。以前の "AND"に戻り、その行を削除することができます。WHERE句を減らすことで、これははるかに簡単になります。 –
これまでに一度これを見ましたが、それは私の元の質問に答えることはできませんが、面白いです。私は私のC#オブジェクトクラスに固執すると仮定すると、今私は "AND"を使用しているかどうかを識別しようとしています(私はブール変数を持っていますが、私が使用する瞬間にtrueに設定されています)。最初のパラメータをいつ使用したかを把握しておく必要がありますか?これにはパフォーマンス上の罰則がありますか?1 = 1は問題を引き起こしますか? –
ここでいくつかの詳細を見てみましょう:http://stackoverflow.com/questions/8149142/where-1-1-statement 私は実際にこのアイデアが好きで、それを実装しようとします。ヒントをありがとう!私は最終的にこの方法を使って私のストアドプロシージャを構築することもできます。みんなありがとう。 –