Substring

substring 函數擷取部分文字。此函數適用於清理具有一致格式的文字(或任何字串資料類型的值)。

例如,substring 函數適用於 SKU 號碼、ISO 代碼和標準化電子郵件地址等字串。

語法 範例
substring(文字, 位置, 長度) substring("user_id@email.com", 1, 7)
從給定的起點(位置)和長度(字元數)擷取部分文字。 “user_id”

參數

  • 字串中的第一個字元位於位置 1。
  • 子字串的長度應始終為正數。

從左側擷取子字串

任務 ID 代理商
19951113006 006
20061114007 007
19640917008 008

「代理商」是一個自訂欄位,其運算式為

substring([Mission ID], 9, 3)

從右側擷取子字串

您將使用以下公式來代替使用數字作為位置

1 + length([column]) - position_from_right

其中 position_from_right 是您要從右向左數的字元數。

任務 ID 代理商
19951113006 006
20061114007 007
19640917008 008

在此,「代理商」是一個自訂欄位,其運算式為

substring([Mission ID], (1 + length([Mission ID]) - 3), 3)

接受的資料類型

資料類型 適用於 substring 函數
字串
數字
時間戳記
布林值
JSON

限制

substring 函數透過計算固定數量的字元來擷取文字。如果您需要根據更複雜的邏輯擷取文字,請嘗試使用 regexextract 函數。

如果您只需要清理文字周圍多餘的空白字元,則可以使用 trimltrimrtrim 運算式。

本節介紹與 Metabase substring 運算式功能相同的函數和公式,並提供有關如何針對您的用例選擇最佳選項的說明。

Metabase 運算式

其他工具

Regexextract

如果您需要根據更具體的規則擷取文字,請使用 regexextract 函數。例如,您可以使用 regex 模式來取得代理商 ID,該模式會尋找最後一次出現的「00」(以及之後的所有內容)

regexextract([Mission ID], ".+(00.+)$")

應傳回與以下相同的結果

substring([Mission ID], 9, 3)

SQL

當您使用筆記本編輯器執行問題時,Metabase 會將您的圖形化查詢設定(篩選器、摘要等)轉換為查詢,並針對您的資料庫執行該查詢以取得結果。

如果我們的範例資料儲存在 PostgreSQL 資料庫中

SELECT
    mission_id,
    SUBSTRING(mission_id, 9, 3) AS agent
FROM
    this_message_will_self_destruct;

相當於 Metabase substring 運算式

substring([Mission ID], 9, 3)

試算表

如果我們的範例資料位於試算表中,其中「任務 ID」位於 A 欄,

=mid(A2,9,3)

與 Metabase substring 運算式相同

substring([Mission ID], 9, 3)

Python

假設範例資料位於名為 df 的資料框架欄位中,

df['Agent'] = df['Mission ID'].str.slice(8, 11)

與 Metabase substring 運算式執行相同的操作

substring([Mission ID], 9, 3)

延伸閱讀

閱讀其他 Metabase 版本的說明文件。