Sqlite.Swift: как фильтровать пустые столбцы?

В моем предыдущем вопросе: Как создать фильтр, который делает SQL-эквивалент WHERE ... IN для SQLite.Swift

Я спросил, как сделать ГДЕ... В быстро.

Теперь, как мне отфильтровать необязательные выражения?

У меня есть версионная база данных, которая позволяет мне добавлять столбцы в таблицы после ее создания. И для этого я создал колонку с

static let timeTag = Expression<String?>("timeTag")

а потом позвонил

try DB.run("PRAGMA user_version = 2")
let query = table.addColumn(timeTag)
let _ = try DB.run(query)

все это работает, и таблица действительно имеет этот столбец, и я могу добавить данные в столбец и т. д.

обычно, когда мне нужно отфильтровать другие столбцы, я делаю

table.filter(self.id == id && self.name == name)

и когда мне нужно сделать, где в,

table.filter((myNameArray.contains(self.name))

теперь я хочу фильтровать столбец timeTag с массивом timeTagArray который представляет собой массив разыскиваемых тегов времени. Я старался

table.filter(timeTagArray.contains(self.timeTag))

и пример таблицы:

+----+-------+-----------+
| id | name  | timetag   |
+----+-------+-----------+
| 1  | Joe   | Morning   |
+----+-------+-----------+
| 2  | Alan  | Afternoon |
+----+-------+-----------+
| 3  | Brad  | Morning   |
+----+-------+-----------+
| 4  | Ian   | Evening   |
+----+-------+-----------+
| 5  | Louis | Midnight  |
+----+-------+-----------+

если мой timeTagArray = ["Morning", "Midnight"] тогда я должен вернуть строки 1, 3, 5.

но это дает мне ошибку, которая говоритCannot assign value of type 'Expression<Bool?>' (aka 'Expression<Optional<Bool>>') to type 'Expression<Bool>'

0 ответов

Другие вопросы по тегам