Comparisons
Comparisons are used in where, join conditions, and having.
Basic operators
| Operator | Meaning |
|---|---|
= | Equal |
!= | Not equal |
< | Less than |
<= | Less than or equal |
> | Greater than |
>= | Greater than or equal |
JQL trims strings and converts numeric strings before ordinary comparison. This means the number 42 and the string "42" compare as equal. Date-like strings are converted to timestamps.
Ranges
between includes both ends of the range:
where total between 50 and 100
Both 50 and 100 match.
Dates and timestamps
Use after and before for time values:
where createdAt after '2026-07-01T00:00:00Z'
JQL accepts ISO date strings, Unix seconds, Unix milliseconds, and numeric strings. Unix seconds and milliseconds are normalized so they can be compared with ISO dates. Equal timestamps do not match after or before.
Null values
where archivedAt is null
where email is not null
is null matches both explicit JSON null and a missing field. is not null matches any other value.
Regular expressions
matches uses JavaScript regular-expression syntax:
where email matches '@example\.com$'
where reference matches '/^ord-[a-z0-9]+$/i'
where name not matches '^test'
A pattern may be plain text or slash-delimited with the JavaScript flags g, i, m, s, u, y, and d.
Membership
When the right value is an array, in checks whether that array contains the left value:
where requestedRole in allowedRoles
When either value is a string, in checks whether the right string contains the left string:
where status in 'paid,shipped'
Use not in for the opposite condition.