子串

substring 从某些文本中提取部分内容。此函数适用于清理具有一致格式的文本(或任何具有 字符串数据类型 的值)。

例如,substring 应适用于SKU号码、ISO代码和标准电子邮件地址等字符串。

语法 示例
substring(text, position, length) substring("[email protected]", 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。例如,您可以使用正则表达式模式获取代理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 的 DataFrame 列中

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

与 Metabase substring 表达式执行相同操作

substring([Mission ID], 9, 3)

进一步阅读

阅读其他 Metabase 版本的文档

想要改进这些文档吗? 提出更改。