---
title: Predicates & Expressions
description: Use Expr methods, logical operators, null checks, and expression composition.
---

# 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)`

```ts
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()`

```ts
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).

```ts
db.from("users").orderBy(({ users }) => users.email.asc());
```

## Building expressions directly

- `db.expr<T>\`...\``: context-aware SQL expression template
- `sqlExpr<T>(sql, params?)`: construct an expression manually

```ts
db.from("users").where(({ users }) =>
	db.expr<boolean>`lower(${users.email}) = lower(${"Alice@example.com"})`,
);
```

<!--
Sitemap

URL: https://tsql-docs.pages.dev/v0.5.0/guides/quickstart.md
Title: Quickstart
Description: Define migrations, run them safely, and write typed SQL in application code.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/connecting.md
Title: Connecting
Description: Create a database instance from schema, dialect, and runtime connection.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/dialect-and-compilation.md
Title: Dialect & SQL Compilation
Description: Configure SQL dialect behavior and compile schema/query SQL.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/grouping-and-aggregates.md
Title: Grouping & Aggregates
Description: Use groupBy, having, and aggregate helpers for analytical queries.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/joins-and-aliases.md
Title: Joins & Aliases
Description: Join tables, use left joins, and self-join safely with aliases.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/migration-runtime.md
Title: Migration Runtime
Description: Understand db.migrate behavior, tracking, and failure semantics.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/mutations.md
Title: Mutations
Description: Insert, update, and delete data with compile or execute.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/predicates-and-expressions.md
Title: Predicates & Expressions
Description: Use Expr methods, logical operators, null checks, and expression composition.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/raw-sql.md
Title: Raw SQL
Description: Use raw templates and expression templates when fluent APIs are not enough.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/schema-and-migrations.md
Title: Schema & Migrations
Description: Define tables, columns, and indexes with ordered migration history.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/select-basics.md
Title: Select Basics
Description: Build typed select queries with from, where, order, limit, and select.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/transactions.md
Title: Transactions
Description: Use explicit begin, commit, rollback, and await using for safety.

URL: https://tsql-docs.pages.dev/v0.5.0/reference/type-utilities.md
Title: Type Utilities
Description: Derive row, insert, and update types directly from schema.
-->
