0

我有一个简单的 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 中也失败了,但在 SQLite 的 GUI TablePlus 中确实可以正常工作。

4

0 回答 0