2015-06-16 4 views
0

Я не могу использовать несколько функций соответствия в filter() запроса , где single match() работает нормально, но когда я начинаю использовать более двух match(), он дает ошибку какНевозможно использовать несколько функций соответствия

утверждение не удалось: не удалось использовать функцию MATCH в запрашиваемом контексте: файл /Users/rspl/Desktop/Tests/SqliteSwiftDemo/SqliteSwiftDemo/SQLiteSwift/Statement.swift, линия 196

ample создает проблему:

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 разрешает только один оператор «MATCH» на SELECT. Вы можете попробовать это

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

это дает то же сообщение об ошибке, как описано выше. Я думаю, что это утверждение дает то же самое, что я обозначил в примере (вопрос) – Jasmin

+1

Отъезд http://www.sqlite.org/fts3.html#section_3_1 - Если вы хотите СМЯТЬ по нескольким вещам, вам просто нужно использовать 'AND ',' OR' или разделять пробелом. Это похоже на поиск в Google или других поисковых системах. Мое предложение: '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 являются именами столбцов