SQLite.Swift Expression() 初始化 "not null"表单?

标签 sqlite.swift

请注意,这个问题仅与流行的SQLite.swift库stephencelis/SQLite.swift相关

使用 SQLite.swift 你可以

    let a = Expression<String>("a")
    let b = Expression<String>("b")

等等。但你怎么办?

select a.x, a.y, ifnull(b.q, 'default text'), a.z
from a
left join b on blah

如何为内联 sql ifnull 子句创建表达式?

(文档提到 Expression 有一个 init(literal:) 初始化器 - 也许它是相关的 - 但它没有文档记录并且具有不寻常的绑定(bind)参数。)

请注意,我完全知道您可以将该值设置为可选

  let q = Expression<String?>("q")

然后稍后输入默认值即可;

我问如何将“ifnull(b.q, 'default text')”表达为表达式(或者,知道这是不可能的),以便该值实际上将在 SQL 表达式中使用。

再一次,这个问题仅与库/stephencelis/SQLite.swift 相关

最佳答案

也许这已经太晚了,但无论如何。我查了源码,有函数

public func ??<V : Value>(optional: Expression<V?>, defaultValue: V) -> Expression<V> {
    return "ifnull".wrap([optional, defaultValue])
}

所以你必须将值设置为可选

row.get(Expression<Double?>("q")) ?? 0 //this will be equals ifnull(q, 0)

关于SQLite.Swift Expression() 初始化 "not null"表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43657549/

相关文章:

ios - 如何在 iOS 中使用现有的 SQLite 数据库?

ios - 如何使用SQLite.swift类型安全API链接条件?

swift - 如何使用 IN 条件访问 SQLite.swift 中的 FTS 表

swift - SQLite.swift:由于无法识别的 token 而无法检索表计数: ":"

swift - 无法使用 SQLite.swift 构建命令行项目

xcode - SQLite.swift pod : Swift Compiler Error in Xcode 8. 3 beta 2

swift - 从 AppDelegate 传递对象到 ViewController

ios - SQLite.swift - 无法为 Row 类型的值添加下标。 swift 2

swift - Sqlite.Swift 不明确的列名 Swift