2

SQLite FTS5 文档说支持搜索查询SELECT ... WHERE MATCH '<query1> NOT <query2>',但看起来不支持一元运算NOT符。

例如,如果我想搜索所有不匹配的内容,我不能使用. 我将不得不使用,这是完全不同的事情(FTS5 模块永远不会看到运算符,因为它在引号之外)。只有引号内的文本是搜索查询。<query>MATCH 'NOT <query>'NOT MATCH '<query>'NOT

我需要找到一种在搜索查询NOT中使用一元运算符的方法。我不能在外面使用它,因为我只能控制搜索查询文本,而不是 SQL 语句的其余部分。

我想到的一种可能的方法是找到一个匹配任何内容的搜索查询,然后执行MATCH '<match_anything> NOT <query>'. 但是,我发现无法匹配搜索查询中的所有内容。

你能想出一种方法来让搜索查询中的一元运算符的行为NOT吗?

4

1 回答 1

0

尝试这个 ..

SELECT * FROM docs
WHERE ROWID NOT IN ( 
  SELECT ROWID FROM docs WHERE content MATCH '<query>'
)
于 2021-12-14T13:57:00.033 回答