SQLSpecificExpressible

public protocol SQLSpecificExpressible : SQLExpressible, SQLOrderingTerm, SQLSelectable

SQLSpecificExpressible is a protocol for all database-specific types that can be turned into an SQL expression. Types whose existence is not purely dedicated to the database should adopt the SQLExpressible protocol instead.

For example, Column is a type that only exists to help you build requests, and it adopts SQLSpecificExpressible.

On the other side, Int adopts SQLExpressible.

SQLExpressible

SQL Ordering Support

SQL Selection Support

  • forKey(_:) Extension method

    Returns an aliased column.

    For example:

    // SELECT (width * height) AS area FROM shape
    let area = (Column("width") * Column("height")).forKey("area")
    let request = Shape.select(area)
    if let row = try Row.fetchOne(db, request) {
        let area: Int = row["area"]
    }
    

    If you need to refer to the aliased column in another part of a request, use Column(...).detached. For example:

    // SELECT (width * height) AS area FROM shape ORDER BY area
    let area = (Column("width") * Column("height")).forKey("area")
    let request = Shape
        .select(area)
        .order(Column("area").detached)
    let rows = try Row.fetchCursor(db, request)
    while let row = try rows.next() {
        let area: Int = row["area"]
    }
    

    Declaration

    Swift

    public func forKey(_ key: String) -> SQLSelection
  • forKey(_:) Extension method

    Returns an aliased column with the same name as the coding key.

    For example:

    struct Shape: Decodable, FetchableRecord, TableRecord {
        let width: Int
        let height: Int
        let area: Int
    
        static let databaseSelection: [SQLSelectable] = [
            Column(CodingKeys.width),
            Column(CodingKeys.height),
            (Column(CodingKeys.width) * Column(CodingKeys.height)).forKey(CodingKeys.area),
        ]
    }
    
    // SELECT width, height, (width * height) AS area FROM shape
    let shapes: [Shape] = try Shape.fetchAll(db)
    

    See forKey(_ key: String) for more information.

    Declaration

    Swift

    public func forKey(_ key: CodingKey) -> SQLSelection

SQL Collations Support

Like Operator

  • like(_:escape:) Extension method

    An SQL expression with the LIKE SQL operator.

    // email LIKE '%@example.com"
    Column("email").like("%@example.com")
    
    // title LIKE '%10\%%' ESCAPE '\'
    Column("title").like("%10\\%%", escape: "\\")
    

    Declaration

    Swift

    public func like(_ pattern: SQLExpressible, escape: SQLExpressible? = nil) -> SQLExpression