我有一个简单的FTS5查询,例如源
function getRes(q) {
const sel = 'SELECT Count(id) AS c FROM t JOIN v ON t.id = v.id WHERE v MATCH ?';
return db.prepare(sel).get(q);
}
getRes('Trematoda (awaiting allocation)')
的操作失败,并出现以下错误
SqliteError: fts5: syntax error near "Trematoda"
当然,它对于getRes('Trematoda')
来说很好用,所以是引起问题的原因。由于我不能保证查询中将包含哪些字符,因此如何确保成功?从我的Perl + Postgres时代开始,我似乎记得,绑定自动完成了所有的转义。似乎JavaScript + SQLite并非如此。在进一步测试中,它也无法在SQLite Shell中失败,但是在Tableite(SQLite的GUI)中确实可以正常工作。