1

行がいくつかの条件に一致する場合にテーブルから行を削除するクエリを作成しました。

sqlite3_prepare(sqlite->db, "DELETE FROM test WHERE field1=? AND field2=? AND field3=? AND field4=? AND field5=?", -1, &sqlite->deleteSymbol, 0);

次に、それらを NULL で終了する文字列にバインドします。ただし、関数の呼び出し元によって渡された文字列のいずれかが NULL である場合、これは、指定された列の値が一致する必要があることを意味します。

つまりfield1field3field5が NULL の場合、クエリは次のようになります。

DELETE FROM test WHERE field2=? AND field4=?

NULL/非NULL文字列の組み合わせごとに個別のクエリを作成せずに、sqlite3_prepareの出力を再利用しながらこれを達成できますか?

4

1 に答える 1

1

パラメータは、常に 1 つの特定の値、つまり を置き換えますNULL。やりたいことは、=演算子のセマンティクスを変更することですが、オペランド値の 1 つを変更することによってこれを行うことはできません。

DELETE新しいコマンドを用意するだけです。このような単純なステートメントを準備するのに大きなオーバーヘッドはありません。

于 2013-04-16T13:17:10.973 に答える