子字符串

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

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

语法 示例
substring(文本, 位置, 长度) substring("user_id@email.com", 1, 7)
给定起始点(位置)和长度(字符数)从文本中提取一部分。 “user_id”

参数

  • 字符串中的第一个字符位于位置 1。
  • 子字符串的长度应始终为正数。

从左侧获取子字符串

任务 ID 代理
19951113006 006
20061114007 007
19640917008 008

Agent 是一个自定义列,其表达式为

substring([Mission ID], 9, 3)

从右侧获取子字符串

您将使用以下公式而不是数字位置

1 + length([column]) - position_from_right

其中 position_from_right 是您要从右到左计数的字符数。

任务 ID 代理
19951113006 006
20061114007 007
19640917008 008

此处,Agent 是一个自定义列,其表达式为

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 的数据框列中,则

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

与 Metabase substring 表达式作用相同

substring([Mission ID], 9, 3)

延伸阅读

阅读其他版本的 Metabase 的文档。

这有帮助吗?

感谢您的反馈!
想要改进这些文档?提出更改。
© . This site is unofficial and not affiliated with Metabase, Inc.