【问题标题】:DB2 - How to retrieve the last substring starting from the endDB2 - 如何检索从末尾开始的最后一个子字符串
【发布时间】:2021-09-14 14:08:08
【问题描述】:

我正在尝试从字符串中检索最后一个子字符串,从末尾开始。 这是我的数据集:

输入:

  • BRAND_Arnette
  • BRAND_Persol
  • MODEL_CODE_DISPLAY_226781

输出:

  • 阿内特
  • 佩索尔
  • 226781

我设法做的是检索我需要的东西,但我没有使用通用方法,因为我一直在考虑最新的 10 个字符,从右边开始:

SELECT
SUBSTR(RIGHT(rtrim(cast(attrval.IDENTIFIER as char(50))), 10), LOCATE('_',RIGHT(rtrim(cast(attrval.IDENTIFIER as char(50))), 10))+1)
                    FROM ...

如何编辑此选择以使其始终有效?谢谢

【问题讨论】:

  • 在寻求帮助时,请务必提及您的 Db2 服务器平台(z/os、i 系列、linux/unix/windows)和 Db2 服务器版本。因为答案可能取决于这些事实,并且每个平台都有特殊的标签。在这种情况下,如果您的 Db2 服务器具有 REGEXP_EXTRACT 函数,那么您可以使用它。

标签: sql database select db2 substring


【解决方案1】:

试试下面的表达式:

SUBSTR (identifier, LOCATE_IN_STRING (identifier, '_', -1) + 1)

dbfiddle 示例。

【讨论】:

    【解决方案2】:

    我建议regexp_substr():

    select regexp_substr(identifier, '[^_]+$')
    

    Here 是一个 dbfiddle。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多