QUERY 函式大解析(十一):LIKE

QUERY 函式大解析(十一):LIKE

更新於 發佈於 閱讀時間約 7 分鐘

在上次的 QUERY 函式大解析(二):WHERE 提到了進階的 LIKE 可以做更細膩的條件搜尋。今天的這篇文就是要盡力徹底講解 LIKE,以及實際應用上可以怎麼執行 ♥(´∀` )人

我在方格子上寫了一系列使用 QUERY 的教學文章,也歡迎你來看看:

QUERY 函式大解析,系列文索引


LIKE

這邊的 LIKE 不是「喜歡」、而是「像是~」的意思。我們可以用 LIKE 做模糊的搜尋,給 QUERY 一個「我想找這個欄裡面所有像是...的資料」的指令。舉個例子:

  • 想找到所有開頭像是「台北」的資料
    台北市政府、台北 101、台北車站 ...
  • 想找到所有結尾像是「茶」的資料
    、綠、烏龍...
  • 想找到所有開頭像是「王」、結尾像是「明」的姓名
    ...

雖然說之前學到的 starts with、ends with 或 contains 也可以解決這樣的狀況,但 LIKE 可以更進一步做更細膩的搜尋——利用字元的長度來搜尋

打個比方,你記得有一款之前喝過的奶茶叫做「OO奶茶加...」。你知道那個名字裡,開頭有兩個字、中間是奶茶、但後面是什麼你不記得了。那麼:

  • 珍珠奶茶加椰果」、「布丁奶茶加小珍珠」就會符合條件
  • 但「奶茶」、「奶茶加珍珠」就不會,因為它們都不符合你想要搜尋的邏輯(開頭只有一個字)。

這就是 LIKE 可以做到的事,讓你可以更精準地告訴 QUERY 你想找的東西。怎麼做呢?我們得先認識兩個萬用符號,「%」(百分比符號)「_」(半形底線符號)


%:不限字元

「%」這個符號會告訴 LIKE:「我想找任何未知的字元,可以是零個、一個或是多個字元」,通常是當你不確定欄位裡資料的長度時可以使用。

舉例來說:

WHERE A LIKE 't%'
搜尋 A 欄裡,開頭是 t 的資料(跟 starts with 't' 相同)
結果:taipei、taichung、tainan、taitung ...


WHERE A LIKE '%t'
搜尋 A 欄裡,結尾是 t 的資料(跟 ends with 't' 相同)
結果:best、fast、feat、port ...


WHERE A LIKE '%taiwan%'
搜尋 A 欄裡,含有 taiwan 的資料(跟 contains 'taiwan' 相同)
結果:taiwan island、taiwanese、she is from taiwan ...


_:一個字元

而「_」這個符號會告訴 LIKE:「我想找任何未知的字元,可是它只代表一個字元」,通常是當你確定欄位裡那個未知字元的長度時可以使用。打一個底線符號就是指定一個未知字元、兩個符號就是兩個未知字元、三個符號就是三個,以此類推。

舉例:

WHERE A LIKE '_茶'
搜尋 A 欄裡,找到兩個字的資料、且第二個字是「茶」(第一個字未知)
結果:紅茶、奶茶、綠茶 ...

WHERE A LIKE '__茶'
搜尋 A 欄裡,找到三個字的資料、且第三個字是「茶」的資料(第一、第二個字未知)
結果:水果茶、普洱茶、烏龍茶 ...

WHERE A LIKE '草莓__'
搜尋 A 欄裡,找到四個字的資料、且前兩個字是「水果」的資料(第三、第四個字未知)
結果:草莓蛋糕、草莓果凍、草莓冰沙 ...

那馬上示範幾個 LIKE 的應用方式供大家參考囉!

我把這次的教學試算表放在這邊,歡迎複製一份到你的雲端硬碟上,一起練習吧!


應用

先來看看 % 的使用方法吧。假如有張寫著班上同學的名字、跟他們喜歡的飲料的表:

姓名和飲料為隨機生成,不代表現實世界的任何人物。對,我知道有些飲料看起來很奇怪(^U^)...

姓名和飲料為隨機生成,不代表現實世界的任何人物。對,我知道有些飲料看起來很奇怪(^U^)...

先觀察一下 B 欄的資料。它們由四個部分組成,分別是配料、茶飲、甜度、冰塊:

  • 寒天 + 青茶 + 半糖 + 少冰
  • 草莓 + 烏龍茶 + 全糖 + 微冰
  • 布丁 + 奶茶 + 全糖 + 去冰

那麼,假如今天我想找喜歡飲料裡有紅豆、且偏好微糖少冰的人有誰,我們的語法就會是:

=QUERY(A2:B, "SELECT * WHERE B LIKE '紅豆%微糖少冰'")

翻譯一下,這段 LIKE 代表我們確定:這個飲料會以「紅豆」開頭、不確定中間是什麼茶飲(也不知道字元個數)、確定是「微糖少冰」結尾的意思。

來看看執行效果:

搞定!原來那個不確定的飲料是青茶。

搞定!原來那個不確定的飲料是青茶。


我們也可以把「%」跟「_」這兩種符號結合。假如今天我想找到喜歡某個「三個字的配料」加奶茶的人,那麼語法就是:

=QUERY(A2:B, "SELECT * WHERE B LIKE '___奶茶%'")

翻譯一下,這段 LIKE 就是,「想找確定前面有三個字、在那之後有奶茶、後面什麼甜度冰塊我不確定的飲料」。來看看效果:

原來那三個字是仙草凍!

原來那三個字是仙草凍!


最後,你也可以搭配 NOT 使用,找到指定條件外的資料。舉例來說,這次我想找到喜歡常溫奶茶以外的人有誰,語法就可以下:

=QUERY(A2:B, "SELECT * WHERE NOT B LIKE '%奶茶%常溫'")

記得把 NOT 放在欄位字母前面喔!一樣來瞧瞧效果:

raw-image

如果要用 starts with、ends with、contains,可能就得搭配其他的邏輯運算(AND、OR),這麼一來事情會變得有點複雜,而 LIKE 就可以簡化這些,讓你更輕鬆地得到複雜的搜尋結果。


在工作上,我用 LIKE 的次數其實比之前更頻繁了。這不只是因為比起 starts with、ends with、contains 這些語法,我用 LIKE 可以少打好幾個字、也能達到同樣的效果,也當然是因為 LIKE 可以應付更細膩的搜尋條件,可以更精準抓到想看的資料,讓我的 WHERE 更加彈性。

如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!

想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



avatar-img
喜特先生官方沙龍
17.4K會員
151內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言
avatar-img
留言分享你的想法!
喜特先生官方沙龍 的其他內容
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代