2025年1月11日 星期六

【Google教學】試算表的query函數中matches與contains的差異



最近使用query函數想要做出類似sql語法的like或是in的功能,用chatgpt找到2個解法。

使用場景建議:

如果您的篩選條件較為簡單,例如只需要檢查某列是否包含一段文字,建議使用 CONTAINS。

如果您需要更精確或複雜的匹配條件(如多個關鍵字、特定格式),建議使用 MATCHES。

我用之前的英文題庫做給大家看。


=QUERY(A:C,"select * where C contains  'act' ")

=QUERY(A:C,"select * where  A MATCHES '(2|3)' ")

=QUERY(A:C,"select * where C MATCHES  '(act|aim)' ")


00:00 1.說明

01:01 2.MATCHES功能

01:55 3.contains功能

02:26 4.兩者差異

02:59 5.contains實作

03:51 6.MATCHES實作

05:09 7.MATCHES跟join配合



英文單字測驗

https://docs.google.com/spreadsheets/d/1KMUUBzi-4sbW2Qrzeoc75PetNbNogJXRoSurz2ChvZM/copy



GoogleAI整理後的大綱

  1. 開頭 (0:00 - 0:09)

    • 自我介紹 (彰化一整天的Blog站長)

    • 主題說明:介紹 Google Sheets QUERY 函數中 MATCHES 和 CONTAINS 的不同。

  2. 動機與背景 (0:09 - 0:20)

    • 近期使用 QUERY 時,想實現類似 SQL 語法中的 LIKE (模糊比對) 或 IN (多重條件) 的功能。

    • 透過 ChatGPT 找到兩種解法:CONTAINS 和 MATCHES

  3. 使用場景建議 (ChatGPT 建議) (0:20 - 0:41)

    • CONTAINS

      • 適用時機:篩選條件較簡單,例如只需檢查某欄位是否 包含 一段文字。

      • 範例:QUERY(A:C,"select * where C contains 'act'", )

    • MATCHES

      • 適用時機:需要更精確或複雜的匹配條件,例如使用多個關鍵字 (OR 條件)、特定格式、正則表達式。

      • 範例:QUERY(A:C,"select * where A MATCHES '(2|3)'", ) (數字匹配)

      • 範例:QUERY(A:C,"select * where C MATCHES '(act|aim)'", ) (文字 OR 匹配)

  4. 理論說明 (參考 ChatGPT) (0:44 - 2:28)

    •  詳解:

      • 作用:使用「正則表達式 (Regular Expression)」進行匹配。

      • 功能:可處理更複雜的模式,匹配多個字母、數字、特定格式。

      • 特點:

        • 支援正則表達式語法。

        • 可用 | (管道符號) 實現 OR 條件 (例如 act|aim)。

        • 適合處理更靈活和高級的篩選需求。

      • 範例說明 (act|aimact.*)

    •  詳解:

      • 作用:用作簡單的「子字串」匹配。

      • 功能:檢查某列儲存格是否 包含 指定的子字串。

      • 特點:

        • 僅檢查是否存在特定文字。

        • 不支援正則表達式。

        • 更直觀,適合處理簡單的篩選條件。

      • 範例說明 (act)

    • 主要差異總結 (表格呈現):比較特性、靈活性、用途。

  5. 實作演示 (Google Sheets) (2:52 - 6:46)

    •  實作 (3:26)

      • 公式:=QUERY(A:C,"select * where C contains 'act'", 0)

      • 結果分析:會找出所有 包含 "act" 的字串 (如 act, active, actor, actress)。

    •  實作 (數字 OR) (4:01)

      • 公式:=QUERY(A:C,"select * where A MATCHES '(2|3)'", 1) (影片中僅說明,未直接演示此數字範例)

      • 結果分析:找出 A 欄完全等於 2  3 的資料。

    •  實作 (文字 OR) (4:27)

      • 公式:=QUERY(A:C,"select * where C MATCHES '(act|aim)'", 0)

      • 結果分析:只會找出 完全符合 "act"  "aim" 的資料。

      • 強調 MATCHES 預設是完全匹配。

    •  進階應用 (搭配  (5:07)

      • 目的:讓篩選條件可以來自儲存格範圍,方便修改。

      • 方法:

        • 使用 JOIN("|", G1:G2) 將儲存格內容以 | 符號串接起來 (例如產生 allow|aim)。

        • 將串接結果用 & 符號嵌入 MATCHES 的條件字串中。

      • 公式:=QUERY(A:C,"select * where C MATCHES '(" & JOIN("|",G1:G2) & ")'", 0)

      • 優點:可動態更改 G1, G2 儲存格內容來改變篩選條件。

  6. 結語 (6:46 - 6:49)

    • 總結本次教學內容。

    • 感謝觀看。

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

Google Sheets 教學:輕鬆將表單多選結果拆分成多筆資料 (FLATTEN, SPLIT, QUERY 組合應用)

前言 您是否也曾遇過這樣的困擾?當您使用 Google 表單的「核取方塊」讓使用者進行多重選擇後,收集到的回覆在 Google Sheets 中會將所有選項擠在同一個儲存格裡,並用逗號隔開。例如,一個訂單表單中,客戶可能在「購買口味」欄位中一次選擇了「原味, 粉光, 人蔘」。 這...