Chapter 13. 函式 (八):QUERY13.4 字串處理

13.4 字串處理


在 QUERY 中有一些與字串處理相關之語法,可以將字串進行大小寫轉換及取得字串符合某個條件的資料,如下:

語法

說明

大小寫

upper / lower (字串)

將字串轉為全大寫 / 小寫,例如 select upper(A)where lower(B)='x'

包含 /
開頭 /
結尾

contains / starts with / ends with '字串'

用在 where 後面作為篩選依據,可以篩選出包含 / 開頭 / 結尾為指定字串的資料,例如 where A contains 'Hi'where B starts with 's'

matches

matches '正規表示式字串'

用在 where 後面作為篩選依據,可以篩選出符合正規表示式的資料,例如 where A matches '.*ing' (結尾是 ing 的資料)。

like

like '條件字串'

用在 where 後面作為篩選依據,可以篩選出符合條件字串的資料,其中條件字串包括以下兩項:

  • %:0 個或多個字元,例如 where A like '%ing' (結尾是 ing)。
  • _:1 個字元,例如 where A like 'h_t' (內容是 h + 任意字元 + t)。

以下使用兩個範例說明上述語法的使用方式:

  1. 貨名是「台灣」開頭的總銷售額

    公式

    • =QUERY(交易記錄,"select sum(K) where H starts with '台灣'")
    • =QUERY(交易記錄,"select sum(K) where H matches '台灣.*'")
    • =QUERY(交易記錄,"select sum(K) where H like '台灣%'")

    解說

    以上分別使用三種不同的語法表示「開頭是台灣的」的條件,可以根據自身習慣使用其中一種。

  2. 篩選所有貨名中有標註「重量」或「容量」的貨名,並移除重複內容

    公式

    =UNIQUE(QUERY(交易記錄,"select H where lower(H) matches '.*[0-9]+[mlkgcoz].*'"))

    解說

    先觀察原始資料了解貨名的特性,大致上可以發現有標註者的語法都是「數字 + ml / l / cc / oz / g / kg」,而重量或容量的單位又有可能是大寫或小寫。綜合以上,將條件設定為 where lower(H) matches '.*[0-9]+[mlkgcoz].*',將字串轉換成小寫後再使用正規表示式判斷是否包含符合條件的字串。

在這四節了解欄位選取與篩選的基本操作後,接下來將介紹 QUERY 中最重要的功能 — 根據欄位的內容聚合以及製作資料透視表。