iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
IT管理

每天利用 Jira 開單時,練習一個密技,應該不是薪水小偷吧!?系列 第 25

Day25 - 解析 JQL 讓 Automation 更進階 - 今天來認識 JQL operators (運算符號)

  • 分享至 

  • xImage
  •  

今日分享 JQL operators

今天不練習設定自動化了,今天來好好帶大家認識 JQL 中常常會看到的運算符號,這樣一來,我們不會一直處於懂與不懂之間,會「開始懂了」。
學習參考來源 JQL operators


JQL operators(運算符號)

JQL 中的運算符是一個或多個符號或詞語,它比較左側字段的值與右側的一個或多個值(或函數),以使僅檢索到符合條件的結果。一些運算符可能使用 NOT 關鍵字。
今天要來認識
= | != | > | >= |
-- | -- | -- |
< | <= | ~ | !~ |
IN | NOT IN | IS | IS NOT |
WAS | WAS IN | WAS NOT IN | WAS NOT
CHANGED | | | |


  1. Equals (=):用於搜尋指定的值完全匹配指定值的 issue。若是搜尋指定文句就必須使用 CONTAINS 。
    例如:搜尋由John Smith create 的所有 issue reporter = "John Smith"

  1. Not equals (!=) :用於搜尋指定的值與指定值不匹配的 issue。若是搜尋指定文句就必須使用 DOES NOT MATCH ("!~") 。輸入 field != value 與輸入 NOT field = value 是相同的,field != EMPTY 與 field IS_NOT EMPTY 也是相同的。
    例如:搜尋由我 create 但不是 assignee 給我的所有 issue。reporter = currentUser() and assignee != currentUser()

  1. Greater than (>):用於搜尋指定的值大於指定值的 issue。
    例如:搜尋所有逾期的 issue。duedate < now() and resolution is empty

  1. Greater than equals (>=):用於搜尋指定的值或等於指定值的 issue。
    例如:搜尋在過去五天内 create 的所有issue。created >= "-5d"

  1. Less than (<) :用於搜尋指定的值小於指定值的 issue。
    例如:搜尋所有少於4票的issue。votes < 4

  1. Less than equals (<=):用於搜尋指定的值小於或等於指定值的 issue。
    例如:搜尋在過去的一個月(30天)內未更新的 issue。updated <= "-4w 2d"

上述 ">"、">="、"<"、"<=" 僅適用於支持排序的字段(例如日期和版本),無法與文句字段一起使用。


  1. IN:用於搜尋指定的值是否為多個指定值之一。這些值以逗號分隔的列表形式在括號中指定。使用 "IN" 等同於使用多個 EQUALS (=) 陳述,但更簡潔方便。例如:搜尋所有 Reporter或 Assignee 為 Jack 或 Jill 的 issue。
    你可以輸入 reporter IN (tom, jane, harry)
    也可以輸入 reporter = "tom" OR reporter = "jane" OR reporter = "harry"

  1. NOT IN:用於搜索指定字段的值是否不是多個指定值之一。使用 "NOT IN" 等同於使用多個 NOT_EQUALS (!=) 陳述,但更簡潔方便。。
    例如:輸入 reporter NOT IN (tom, jane, harry) 等同 reporter != "tom" AND reporter != "jane" AND reporter != "harry"
    另外,"NOT IN" 不會匹配沒有值的字段(即空字段)
    例如:搜索已分配負責人且負責人不是 "jack" 或 "jill" 的issue。assignee not in (jack, jill)
    但如果要搜尋 assignee 給其他人(不是 "jack" 或 "jill")或未指定的 issues。就必須要這樣下指令assignee not in (jack, jill) 或 assignee is empty

  1. CONTAINS (~):用於搜尋值匹配指定值的 issue(可以是精確匹配或“模糊”匹配)。
    例如:搜尋所有 summary 摘要中包含文字 "win" 的 issues。summary ~ "win*"
    搜尋所有 summary 摘要包含精確名詞 "full screen" 的 issues。summary ~ ""full screen""

  1. DOES NOT CONTAIN (!~):用於搜尋值未與指定值進行“模糊”匹配的 issue。
    例如:搜尋所有 summary 摘要中不包含名詞 "run"(或該詞的衍生詞,如 "running" 或 "ran")的 issues。summary !~ run

上述 "~"、"!~" 僅用於文本字段,即:Summary、Description、Environment、Comments等,用於 JQL 字段會加上 “text”。


  1. IS:僅可與 EMPTY 或 NULL 一起使用。也就是說,它用於搜尋指定字段沒有值的 issue。
    例如:搜尋所有沒有修復版本的 issues。fixVersion is emptyfixVersion is null

  1. IS NOT:僅可與 EMPTY 或 NULL 一起使用。也就是說,它用於搜尋指定字段具有值的 issue。
    例如:搜尋所有有一個或多個投票的 issues。votes is not emptyvotes is not null

  1. WAS:用於搜尋當前具有或先前具有指定字段的指定值的 issue。
    例如:搜尋由 Joe Smith 在2月2日之前解決的 issues。status WAS "Resolved" BY jsmith BEFORE "2019/02/02"
    例如:搜尋 keyID為 abcde-12345-fedcba 且由 Joe Smith 在 2010 年期間解決的 issues。status WAS "Resolved" BY abcde-12345-fedcba DURING ("2010/01/01","2011/01/01")

  1. WAS IN:用於搜尋當前具有或以前具有指定字段的多個指定值之一的 issue。這些值以逗號分隔的列表形式在括號中指定。使用 "WAS IN" 等同於使用多個 WAS 聲明,但更簡潔和方便。
    例如:搜尋現在有或以前有 “Resolved” 或 “In Progress” 狀態的所有 issues。status WAS IN ('Resolved', 'In Progress') 等同 status WAS "Resolved" OR status WAS "In Progress"

  2. WAS NOT IN:用於搜尋字段的值從未是多個指定值之一的 issue。使用 "WAS NOT IN" 等於使用多個 WAS_NOT 聲明,但更簡潔和方便。
    例如:搜尋從未具有 “Resolved” 或 “In Progress” 狀態的 issues。 status WAS NOT IN ("Resolved","In Progress") 等同 status WAS NOT "Resolved" AND status WAS NOT "In Progress"

例如:在2月2日之前,未曾到過 “Resolved” 或 “In Progress” 狀態的 issues。status WAS NOT IN ("Resolved","In Progress") BEFORE "2011/02/02"


  1. WAS NOT:用於搜尋從未在指定字段上具有指定值的 issue。
    例如:搜尋在2月2日之前没有 “In Progress” 狀態的 issues。status WAS NOT "In Progress" BEFORE "2011/02/02"

WAS、WAS IN、WAS NOT IN、WAS NOT 有以下可選述詞,如 AFTER "date"、BEFORE "date"、BY "username" or BY (username1,username2)、DURING ("date1","date2")、ON "date"。 僅適用於分配人(Assignee)、修復版本(Fix Version)、優先級(Priority)、報告人(Reporter)、解決方案(Resolution)和狀態(Status)字段。


  1. CHANGED:用於搜尋指定字段的值已更改的 issue。
    例如:搜尋在本週開始之後且結束之前由 'freddo' 更改過優先順序的 issues。priority CHANGED BY freddo BEFORE endOfWeek() AFTER startOfWeek()

有以下可選述詞AFTER "date"、BEFORE "date"、BY "username"、DURING ("date1","date2")、ON "date"、FROM "oldvalue"、TO "newvalue"。僅適用於分配人(Assignee)、修復版本(Fix Version)、優先級(Priority)、報告人(Reporter)、解決方案(Resolution)和狀態(Status)字段。

以上是 JQL operators(運算符號) 的解析的練習,不知對你而言有沒有幫助,但對我自己非常有幫助。


上一篇
Day24- 解析 JQL 讓 Automation 更進階-認識 JQL Keywords後,設定開新版本後自動加入 IN PROGRESS 的票中
下一篇
Day26 - Jira 提醒設定好造成同事困擾,一言不合要我動手修好~
系列文
每天利用 Jira 開單時,練習一個密技,應該不是薪水小偷吧!?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言