Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
This is an additional information page for Magic Estimations app users who would like to get assistance with JQL to master issue selection that was described in https://tech-5.atlassian.net/wiki/spaces/TD/pages/197066778/Starting+and+configuring+estimation#Selecting-estimation-scope-(backlog).
In Magic Estimations for Jira Cloud we developed the issue selection page based on popular JQL (Jira Query Language) which is the most powerful and flexible way to search for your issues in Jira.
This guide has been created to assist in case problems with a specific queries.
Jira Query
Queries are a series of simple elements strung together to form a more complex question. A query has three basic parts: fields, operators, and values.
– Fields are different types of information in the system. Jira fields include priority, fixVersion, issue type, etc.
– Operators are the heart of the query. They relate the field to the value. Common operators include equals (=), not equals (!=), less than (<), etc.
Value – Values are the actual data in the query. They are usually the item for which we are looking.
– Keywords are specific words in the language that have special meaning like AND and OR.
Quick example:
Code Block |
---|
project = "TEST" |
where
project is the field
= is the operator
TEST is the value
Fields
Almost any type of information that characterizes an issue might be used as the field in JQL. Just remember to take multi-word fields in quotes and you’re good to go!
Code Block |
---|
"Story Points" >= 5 |
Operators
An operator in JQL is one or more symbols or words which compares the value of a field on its left with one or more values (or functions) on its right, such that only true results are retrieved by the clause. Some operators may use the NOT keyword.
List of Operators:
CHANGED
EQUALS: =
The "=
" operator is used to search for issues where the value of the specified field exactly matches the specified value. (Note: cannot be used with text fields; see the CONTAINS operator instead.)
To find issues where the value of a specified field exactly matches multiple values, use multiple "=
" statements with the AND operator.
Examples
Find all issues that were created by jsmith:
Code Block reporter = jsmith
Find all issues that were created by John Smith:
Code Block reporter = "John Smith"
^top of operators | ^^top of topic
NOT EQUALS: !=
The "!=
" operator is used to search for issues where the value of the specified field does not match the specified value. (Note: cannot be used with text fields; see the DOES NOT MATCH ("!~
") operator instead.)
Note that typing field != value
is the same as typing NOT field = value
, and that field != EMPTY
is the same as field IS_NOT EMPTY
.
The "!=
" operator will not match a field that has no value (i.e. a field that is empty). For example, component != fred
will only match issues that have a component and the component is not "fred". To find issues that have a component other than "fred" or have no component, you would need to type: component != fred or component is empty
.
Examples
Find all issues that are assigned to any user except jsmith:
Code Block not assignee = jsmith
or:
Code Block assignee != jsmith
Find all issues that are not assigned to jsmith:
Code Block assignee != jsmith or assignee is empty
Find all issues that were reported by me but are not assigned to me:
Code Block reporter = currentUser() and assignee != currentUser()
Find all issues where the Reporter or Assignee is anyone except John Smith:
Code Block assignee != "John Smith" or reporter != "John Smith"
Find all issues that are not unassigned:
Code Block assignee is not empty
or
Code Block assignee != null
^top of operators | ^^top of topic
GREATER THAN: >
The ">
" operator is used to search for issues where the value of the specified field is greater than the specified value. Cannot be used with text fields.
Note that the ">
" operator can only be used with fields which support ordering (e.g. date fields and version fields).
Examples
Find all issues with more than 4 votes:
Code Block votes > 4
Find all overdue issues:
Code Block duedate < now() and resolution is empty
Find all issues where priority is higher than "Normal":
Code Block priority > normal
^top of operators | ^^top of topic
GREATER THAN EQUALS: >=
The ">=
" operator is used to search for issues where the value of the specified field is greater than or equal to the specified value. Cannot be used with text fields.
Note that the ">=
" operator can only be used with fields which support ordering (e.g. date fields and version fields).
Examples
Find all issues with 4 or more votes:
Code Block votes >= 4
Find all issues due on or after 31/12/2008:
Code Block duedate >= "2008/12/31"
Find all issues created in the last five days:
Code Block created >= "-5d"
^top of operators | ^^top of topic
LESS THAN: <
The "<
" operator is used to search for issues where the value of the specified field is less than the specified value. Cannot be used with text fields.
Note that the "<
" operator can only be used with fields which support ordering (e.g. date fields and version fields).
Examples
Find all issues with less than 4 votes:
Code Block votes < 4
^top of operators | ^^top of topic
LESS THAN EQUALS: <=
The "<=
" operator is used to search for issues where the value of the specified field is less than or equal to than the specified value. Cannot be used with text fields.
Note that the "<=
" operator can only be used with fields which support ordering (e.g. date fields and version fields).
Examples
Find all issues with 4 or fewer votes:
Code Block votes <= 4
Find all issues that have not been updated in the past month (30 days):
Code Block updated <= "-4w 2d"
^top of operators | ^^top of topic
IN
The "IN
" operator is used to search for issues where the value of the specified field is one of multiple specified values. The values are specified as a comma-delimited list, surrounded by parentheses.
Using "IN
" is equivalent to using multiple EQUALS (=)
statements, but is shorter and more convenient. That is, typing reporter IN (tom, jane, harry)
is the same as typing reporter = "tom" OR reporter = "jane" OR reporter = "harry"
.
Examples
Find all issues that were created by either jsmith or jbrown or jjones:
Code Block reporter in (jsmith,jbrown,jjones)
Find all issues where the Reporter or Assignee is either Jack or Jill:
Code Block reporter in (Jack,Jill) or assignee in (Jack,Jill)
Find all issues in version 3.14 or version 4.2:
Code Block affectedVersion in ("3.14", "4.2")
^top of operators | ^^top of topic
NOT IN
The "NOT IN
" operator is used to search for issues where the value of the specified field is not one of multiple specified values.
Using "NOT IN
" is equivalent to using multiple NOT_EQUALS (!=)
statements, but is shorter and more convenient. That is, typing reporter NOT IN (tom, jane, harry)
is the same as typing reporter != "tom" AND reporter != "jane" AND reporter != "harry"
.
The "NOT IN
" operator will not match a field that has no value (i.e. a field that is empty). For example, assignee not in (jack,jill)
will only match issues that have an assignee and the assignee is not "jack" or "jill". To find issues that are assigned to someone other than "jack" or "jill" or are unassigned, you would need to type: assignee not in (jack,jill) or assignee is empty
.
Examples
Find all issues where the Assignee is someone other than Jack, Jill or John:
Code Block assignee not in (Jack,Jill,John)
Find all issues where the Assignee is not Jack, Jill or John:
Code Block assignee not in (Jack,Jill,John) or assignee is empty
Find all issues where the FixVersion is not 'A', 'B', 'C' or 'D':
Code Block FixVersion not in (A, B, C, D)
Find all issues where the FixVersion is not 'A', 'B', 'C' or 'D', or has not been specified:
Code Block FixVersion not in (A, B, C, D) or FixVersion is empty
^top of operators | ^^top of topic
CONTAINS: ~
The "~
" operator is used to search for issues where the value of the specified field matches the specified value (either an exact match or a "fuzzy" match — see examples below). For use with text fields only, i.e.:
Summary
Description
Environment
Comments
custom fields which use the "Free Text Searcher"; this includes custom fields of the following built-in Custom Field Types
Free Text Field (unlimited text)
Text Field (< 255 characters)
Read-only Text Field
The JQL field "text" as in text ~ "some words"
searches an issue's Summary, Description, Environment, Comments. It also searches all text custom fields. If you have many text custom fields you can improve performance of your queries by searching on specific fields, e.g. Summary ~ "some words" OR Description ~ "some words"
Examples
Find all issues where the Summary contains the word "win" (or simple derivatives of that word, such as "wins"):
Code Block summary ~ win
Find all issues where the Summary contains a wild-card match for the word "win":
Code Block summary ~ "win*"
Find all issues where the Summary contains the word "issue" and the word "collector":
Code Block summary ~ "issue collector"
Find all issues where the Summary contains the exact phrase "full screen" (see Reserved Characters for details on how to escape quote-marks and other special characters):
Code Block summary ~ "\"full screen\""
^top of operators | ^^top of topic
DOES NOT CONTAIN: !~
The "!~
" operator is used to search for issues where the value of the specified field is not a "fuzzy" match for the specified value. For use with text fields only, i.e.:
Summary
Description
Environment
Comments
custom fields which use the "Free Text Searcher"; this includes custom fields of the following built-in Custom Field Types
Free Text Field (unlimited text)
Text Field (< 255 characters)
Read-only Text Field
The JQL field "text" as in text ~ "some words"
searches an issue's Summary, Description, Environment, Comments. It also searches all text custom fields. If you have many text custom fields you can improve performance of your queries by searching on specific fields, e.g. Summary ~ "some words" OR Description ~ "some words"
Examples
Find all issues where the Summary does not contain the word "run" (or derivatives of that word, such as "running" or "ran"):
Code Block summary !~ run
^top of operators | ^^top of topic
IS
The "IS
" operator can only be used with EMPTY or NULL. That is, it is used to search for issues where the specified field has no value.
Note that not all fields are compatible with this operator; see the individual field reference for details.
Examples
Find all issues that have no Fix Version:
Code Block fixVersion is empty
or
Code Block fixVersion is null
^top of operators | ^^top of topic
IS NOT
The "IS NOT
" operator can only be used with EMPTY or NULL. That is, it is used to search for issues where the specified field has a value.
Note that not all fields are compatible with this operator; see the individual field reference for details.
Examples
Find all issues that have one or more votes:
Code Block votes is not empty
or
Code Block votes is not null
^top of operators | ^^top of topic
WAS
The "WAS
" operator is used to find issues that currently have, or previously had, the specified value for the specified field.
This operator has the following optional predicates:
AFTER "date"
BEFORE "date"
BY "username"
DURING ("date1","date2")
ON "date"
This operator will match the value name (e.g. "Resolved"), which was configured in your system at the time that the field was changed. This operator will also match the value ID associated with that value name too — that is, it will match "4" as well as "Resolved".
(Note: This operator can be used with the Assignee, Fix Version, Priority, Reporter, Resolution and Status fields only.)
Examples
Find issues that currently have, or previously had, a status of 'In Progress':
Code Block status WAS "In Progress"
Find issues that were resolved by Joe Smith before 2nd February:
Code Block status WAS "Resolved" BY jsmith BEFORE "2011/02/02"
Find issues that were resolved by Joe Smith during 2010:
Code Block status WAS "Resolved" BY jsmith DURING ("2010/01/01","2011/01/01")
^top of operators | ^^top of topic
WAS IN
The "WAS IN
" operator is used to find issues that currently have, or previously had, any of multiple specified values for the specified field. The values are specified as a comma-delimited list, surrounded by parentheses.
Using "WAS IN
" is equivalent to using multiple WAS
statements, but is shorter and more convenient. That is, typing status WAS IN ('Resolved', 'Closed')
is the same as typing status WAS "Resolved" OR status WAS "Closed"
.
This operator has the following optional predicates:
AFTER "date"
BEFORE "date"
BY "username"
DURING ("date1","date2")
ON "date"
This operator will match the value name (e.g. "Resolved"), which was configured in your system at the time that the field was changed. This operator will also match the value ID associated with that value name too — that is, it will match "4" as well as "Resolved".
(Note: This operator can be used with the Assignee, Fix Version, Priority, Reporter, Resolution and Status fields only.)
Examples
Find all issues that currently have, or previously had, a status of 'Resolved' or 'In Progress':
Code Block status WAS IN ("Resolved","In Progress")
^top of operators | ^^top of topic
WAS NOT IN
The "WAS NOT IN
" operator is used to search for issues where the value of the specified field has never been one of multiple specified values.
Using "WAS NOT IN
" is equivalent to using multiple WAS_NOT
statements, but is shorter and more convenient. That is, typing status WAS NOT IN ("Resolved","In Progress")
is the same as typing status WAS NOT "Resolved" AND status WAS NOT "In Progress"
.
This operator has the following optional predicates:
AFTER "date"
BEFORE "date"
BY "username"
DURING ("date1","date2")
ON "date"
This operator will match the value name (e.g. "Resolved"), which was configured in your system at the time that the field was changed. This operator will also match the value ID associated with that value name too — that is, it will match "4" as well as "Resolved".
(Note: This operator can be used with the Assignee, Fix Version, Priority, Reporter, Resolution and Status fields only.)
Examples
Find issues that have never had a status of 'Resolved' or 'In Progress':
Code Block status WAS NOT IN ("Resolved","In Progress")
Find issues that did not have a status of 'Resolved' or 'In Progress' before 2nd February:
Code Block status WAS NOT IN ("Resolved","In Progress") BEFORE "2011/02/02"
^top of operators | ^^top of topic
WAS NOT
The "WAS NOT
" operator is used to find issues that have never had the specified value for the specified field.
This operator has the following optional predicates:
AFTER "date"
BEFORE "date"
BY "username"
DURING ("date1","date2")
ON "date"
This operator will match the value name (e.g. "Resolved"), which was configured in your system at the time that the field was changed. This operator will also match the value ID associated with that value name too — that is, it will match "4" as well as "Resolved".
(Note: This operator can be used with the Assignee, Fix Version, Priority, Reporter, Resolution and Status fields only.)
Examples
Find issues that do not have, and has never had, a status of 'In Progress':
Code Block status WAS NOT "In Progress"
Find issues that did not have a status of 'In Progress' before 2nd February:
Code Block status WAS NOT "In Progress" BEFORE "2011/02/02"
^top of operators | ^^top of topic
CHANGED
The "CHANGED
" operator is used to find issues that have a value which had changed for the specified field.
This operator has the following optional predicates:
Code Block AFTER "date"
Code Block BEFORE "date"
Code Block BY "username"
Code Block DURING ("date1","date2")
Code Block ON "date"
Code Block FROM "oldvalue"
Code Block TO "newvalue"
(Note: This operator can be used with the Assignee, Fix Version, Priority, Reporter, Resolution and Status fields only.)
Examples
Find issues whose assignee had changed:
Code Block assignee CHANGED
Find issues whose status had changed from 'In Progress' back to 'Open':
Code Block status CHANGED FROM "In Progress" TO "Open"
Find issues whose priority was changed by user 'freddo' after the start and before the end of the current week.
Code Block priority CHANGED BY freddo BEFORE endOfWeek() AFTER startOfWeek()
Keywords
A keyword in JQL is a word or phrase that does (or is) any of the following:
joins two or more clauses together to form a complex JQL query
alters the logic of one or more clauses
alters the logic of operators
has an explicit definition in a JQL query
performs a specific function that alters the results of a JQL query.
List of Keywords:
AND
Used to combine multiple clauses, allowing you to refine your search.
Note that you can use parentheses to control the order in which clauses are executed.
Examples
Find all open issues in the "New office" project:
Code Block project = "New office" and status = "open"
Find all open, urgent issues that are assigned to jsmith:
Code Block status = open and priority = urgent and assignee = jsmith
Find all issues in a particular project that are not assigned to jsmith:
Code Block project = JRA and assignee != jsmith
Find all issues for a specific release which consists of different version numbers across several projects:
Code Block project in (JRA,CONF) and fixVersion = "3.14"
Find all issues where neither the Reporter nor the Assignee is Jack, Jill or John:
Code Block reporter not in (Jack,Jill,John) and assignee not in (Jack,Jill,John)
^top of keywords | ^^top of topic
OR
Used to combine multiple clauses, allowing you to expand your search.
Note that you can use parentheses to control the order in which clauses are executed.
(Note: also see IN, which can be a more convenient way to search for multiple values of a field.)
Examples
Find all issues that were created by either jsmith or jbrown:
Code Block reporter = jsmith or reporter = jbrown
Find all issues that are overdue or where no due date is set:
Code Block duedate < now() or duedate is empty
^top of keywords | ^^top of topic
NOT
Used to negate individual clauses or a complex JQL query (a query made up of more than one clause) using parentheses, allowing you to refine your search.
Examples
Find all issues that are assigned to any user except jsmith:
Code Block not assignee = jsmith
Find all issues that were not created by either jsmith or jbrown:
Code Block not (reporter = jsmith or reporter = jbrown)
^top of keywords | ^^top of topic
EMPTY
Used to search for issues where a given field does not have a value. See also NULL.
Note that EMPTY can only be used with fields that support the IS and IS NOT operators.
⚠ EMPTY is not equivalent to NOT EQUALS (!=)
Examples
Find all issues without a DueDate:
Code Block duedate = empty
or
Code Block duedate is empty
^top of keywords | ^^top of topic
NULL
Used to search for issues where a given field does not have a value. See also EMPTY.
Note that NULL can only be used with fields that support the IS and IS NOT operators.
Examples
Find all issues without a DueDate:
Code Block duedate = null
or
Code Block duedate is null
^top of keywords | ^^top of topic
ORDER BY
Used to specify the fields by whose values the search results will be sorted.
By default, the field's own sorting order will be used. You can override this by specifying ascending order ("asc
") or descending order ("desc
").
Examples
Find all issues without a DueDate, sorted by CreationDate:
Code Block duedate = empty order by created
Find all issues without a DueDate, sorted by CreationDate, then by Priority (highest to lowest):
Code Block duedate = empty order by created, priority desc
Find all issues without a DueDate, sorted by CreationDate, then by Priority (lowest to highest):
Code Block duedate = empty order by created, priority asc
^top of keywords | ^^top of topic
Most of the information was taken from Atlassian resources:
https://www.atlassian.com/blog/jira-software/jql-the-most-flexible-way-to-search-jira-14
https://confluence.atlassian.com/jira064/advanced-searching-720416661.html
On this page
Table of Contents |
---|
|
Magic Estimations docs
Child pages (Children Display) | ||
---|---|---|
|