Predicates & Expressions
Columns in query callbacks are Expr<T> values.
Comparison methods
These methods return Expr<boolean>:
eq(value, dialect)gt(value, dialect)gte(value, dialect)lt(value, dialect)lte(value, dialect)like(value, dialect)
db.from("users").where(({ users }) => users.email.like("%@example.com", db.dialect));
Each comparison accepts either a literal value or another Expr<T>.
Logical and null helpers
exprA.and(exprB)exprA.or(exprB)expr.isNull()expr.isNotNull()
db.from("users").where(({ users }) =>
users.managerId.isNotNull().and(users.email.like("%@company.com", db.dialect)),
);
Ordering expressions
expr.asc()expr.desc()
orderBy accepts either an OrderExpr or a plain Expr (plain defaults to ascending).
db.from("users").orderBy(({ users }) => users.email.asc());
Building expressions directly
db.expr<T>\...``: context-aware SQL expression templatesqlExpr<T>(sql, params?): construct an expression manually
db.from("users").where(({ users }) =>
db.expr<boolean>`lower(${users.email}) = lower(${"Alice@example.com"})`,
);