1

我创建了一个查询,如果它们符合某些条件,则从我的表中删除行。

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

然后我将它们绑定到以 NULL 结尾的字符串。但是,如果我的函数调用者传递的任何字符串为 NULL,那么这意味着给定列的任何值都应该匹配。

即,如果field1field3field5NULL,则查询将等价于

DELETE FROM test WHERE field2=? AND field4=?

这可以在重用 sqlite3_prepare 的输出时实现,而不为 NULL/非 NULL 字符串的每个组合创建单独的查询吗?

4

1 回答 1

1

参数总是替换一个特定的值,或者NULL。您想要做的是更改=运算符的语义,但这不可能通过更改其操作数值之一来实现。

只需准备一个新DELETE命令。准备这样一个简单的语句没有太大的开销。

于 2013-04-16T13:17:10.973 回答