быстрый подсчет sqlite +, где всегда возвращается 0 - PullRequest
0 голосов
/ 21 марта 2019

У меня проблемы с использованием SQlite для Swift с COUNT и WHERE.

Мой код:

let stmtString = "SELECT COUNT(*) FROM Items WHERE codestring LIKE '%\(code)%'"    
let stmt = try self.connection?.prepare("\(stmtString)")

if let stmt = stmt {
    for row in stmt {
        print(row)
    }
}

результат содержит 1 значение (как и должно быть), но оно равно 0. И SELECT COUNT(*) FROM Items", и "SELECT * FROM Items WHERE codestring LIKE '%\(code)%'" работают должным образом, но я не хочу вычислять это в своем коде в надежде на лучшую производительность. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Вы должны использовать scalar вместо prepare для агрегатных функций см. Документ

let stmt = try self.connection?.scalar("\(stmtString)")
0 голосов
/ 21 марта 2019

Таким образом, элемент в таблице не подтверждает написанное вами правило:

codestring LIKE '%\(code)%' проверьте его более тщательно

Простой "SELECT * FROM Items должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...