【常見問題】kintone Query string 的 "like" 運算子搜尋規則

Cybozu台灣
4 天前 ‧ 246 瀏覽

在使用 kintone REST API 透過 Query string 來篩選記錄時,開發者常會對於 "like" 運算子 的運作方式感到困惑,因為它與 SQL 的 LIKE 條件式運作邏輯有所不同。這篇文章將說明 kintone 的 "like" 搜尋規則,並提供一些建議,幫助開發者避免搜尋失敗的問題。

🔍 kintone "like" 運算子的特殊搜尋規則

在 kintone 中使用英文及數字搜尋時,"like" 運算子的搜尋方式並不是單純的部分字串匹配,而是以單字為單位來進行搜尋。這代表著字串的結構會影響搜尋結果。例如:

❌ 搜尋不到的情境

假設有一筆記錄:

test0001

當你執行以下 Query 來搜尋:

field like "test"

這筆記錄 不會被找到,因為 "test0001" 被視為一個完整的單字,並不會拆分成 "test""0001"

✅ 可以搜尋到的情境

如果記錄內容改為:

test-0001

這時候,kintone 會將 "test-0001" 判斷為 "test""0001" 兩個單詞,因此以下 Query 可以搜尋到這筆記錄

field like "test"

這是因為在 kintone 搜尋規則中,符號 "-" 會從關鍵字中被排除的緣故。

📌 kintone 的搜尋規則

官方搜尋行為的詳細說明可參考以下文件:
🔗 kintone 搜尋資料-輸入搜尋關鍵字時的注意事項

以下節錄部分重點:

英文及數字的搜尋規則

  • 無法區分大小寫,全形與半形視為相同字元。
  • 最多可指定 10 個搜尋關鍵字。
  • 搜尋時以單字為單位進行匹配,無法搜尋單詞的一部分。

範例:

cybozu kintone2
  • field like "cybozu"可以搜尋到
  • field like "kintone2"可以搜尋到
  • field like "cy"無法搜尋到
  • field like "kintone"無法搜尋到

"cybozu""kintone2" 各自被視為一個單詞,因此搜尋 "cybozu kintone2" 會被解析為兩個單詞的搜尋。

以下符號(不論全形半形)都會被視為單字的一部分:

  • _(底線)
  • #(井字號)
  • +(加號)

因此當字串為:

cybozu_kintone
  • field like "cybozu_kintone"可以搜尋到
  • field like "cybozu"無法搜尋到
  • field like "kintone"無法搜尋到

符號的影響

以下符號在搜尋時將從關鍵字中被排除:

- & | / ! ( ) { } [ ] ^ " ~ * ? : ; \ $ % @ ' ` = < > , .

故在字串中碰到這些符號時,會像碰到空格一樣將字串拆分成單詞。

例如:

apple&pie

這個字串在 kintone 內部會被視為 "apple" 跟 "pie" 兩個單字("&" 不會被搜尋到)

  • field like "apple"可以搜尋到
  • field like "pie"可以搜尋到
  • field like "apple&pie"可以搜尋到

甚至用 "apple-pie""apple*pie""apple~pie" 都可以搜尋到,因為 "-""*""~" 這些符號在搜尋時都會被排除掉。

結論

kintone 的 "like" 運算子與 SQL 的 LIKE 不同,它以單字為單位來進行搜尋。當字母與數字連在一起時會被視為完整單詞,故在設計資料格式(例如申請單號、項目代號等等)時,若有模糊搜尋的需求,可善用被排除的符號來對字串進行分割,以方便日後搜尋。

0 則留言