2015-06-16 52 views
0

我无法在查询 的filter()中使用多个匹配函数,其中single match()工作正常,但是当我开始使用两个以上的match()时,它会给出错误像无法使用多个匹配函数

断言失败:无法使用的功能相匹配的要求 方面:文件 /Users/rspl/Desktop/Tests/SqliteSwiftDemo/SqliteSwiftDemo/SQLiteSwift/Statement.swift, 线196

下面的ex充足产生了一个问题:

emails.filter( match("xyz", body) && match("wonder*", body)) 

是否有任何其他备用可用?或者我犯了错误。

我只想同时或不同列的两个同时匹配。

+0

做你的意思是'emails.filter {match(“xyz”,$ 0.body)&& match(“wonder *”,$ 0.body)}'? – Carpsen90

+0

不,这个过滤器是** [sqlite.swift](https://github.com/stephencelis/SQLite.swift)**库函数 – Jasmin

+0

'match()'的返回值类型是什么? – Carpsen90

回答

0

FTS每个SELECT语句只允许一个'MATCH'。 你可以试试这个

​​
+0

这给出了与上面描述的相同的错误消息。我认为这种说法给予相同的,因为我已经在例子(问题) – Jasmin

+1

检查出来http://www.sqlite.org/fts3.html#section_3_1 - 如果你想匹配多种事情,你只需要使用'和','OR',或者用空格隔开。这就像在谷歌或其他搜索引擎上搜索。我的建议是:'emails.filter(match(“xyz AND wonder *”,body))'。 – stephencelis

0

您可以在SELECT语句中只使用一个匹配,但你可以使用以下方法来实现这一目标,

SELECT * FROM fts_table WHERE fts_table MATCH 'A:XXX OR B:YYY'假设A,B是列名