如何在 GRDB SQLite 过滤器中划分整数?

问题描述 投票:0回答:1

我正在我的 Swift iOS 应用程序中的 GRDB 中运行一个查询,尝试查找被猜错次数超过特定%的词汇:

func getIncorrectWords(db: GRDB.Database, threshold: Double) throws -> [Word] {
  return words
    .filter(Column("timesCorrect") / Column("timesSeen") < threshold)
    .fetchAll(db);
}

但它包括所有曾经被猜错的单词。

如何才能将其与正确的阈值进行比较?

swift sqlite grdb
1个回答
0
投票

列是整数,因此您正在进行整数除法。

在SQLite中,必须cast

CAST(timesCorrect AS REAL) / timesSeen
),而且GRDB中好像没有别名,所以直接写SQL即可:

func getIncorrectWords(db: GRDB.Database, threshold: Double) throws -> [Word] {
  return words
    .filter(sql: "CAST(timesCorrect AS REAL) / timesShown < ?", arguments: [threshold])
    .fetchAll(db);
}
© www.soinside.com 2019 - 2024. All rights reserved.