You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL/HeatWave中提取AuditKey模式的最后匹配项?

在MySQL 8.0+(HeatWave)中提取文本中最后一个匹配AuditKey模式的内容

需求说明

使用HeatWave(基于MySQL 8.0+),需要从descripcion字段中提取最后一个匹配AuditKey: XXXXX-XXXX-XXXX-XXXX格式的项。字段中该模式可能出现0、1或2次,仅需提取存在的最后一个匹配项。

示例数据

字段值:

texto32:1:texto:NO:Dedo: INDICE DERECHO:AuditKey: ERDE-N1L2-PYPM-J1WJ|PRUEBS:1 :Error: Error: problem interno :AuditKey: MMLE-N6L2-PYPN-9YNG|

需提取结果:MMLE-N6L2-PYPN-9YNG(如需包含AuditKey: 的完整字符串可按需调整)

BigQuery实现方式

在BigQuery中可通过以下语句实现:

ARRAY_REVERSE(REGEXP_EXTRACT_ALL(descripcion, r'Audit[Key]*[=|: ]*([A-Za-z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+)'))[SAFE_OFFSET(0)]

MySQL/HeatWave解决方案

由于MySQL 8.0+没有REGEXP_EXTRACT_ALL函数,可通过以下两种方法实现:

方法1:字符串反转 + 正则匹配

通过反转原字符串,匹配反转后的第一个目标模式,再反转回原格式提取密钥:

SELECT 
  IFNULL(
    REVERSE(
      REGEXP_SUBSTR(
        REVERSE(descripcion),
        r'([A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Za-z0-9]+)\s*:yeKtidA',
        1, 1, 'c', 1
      )
    ),
    ''
  ) AS last_audit_key
FROM your_table;
  • 逻辑:反转字符串后,原最后一个AuditKey会变为第一个出现的反转模式;REGEXP_SUBSTR的第6个参数指定提取捕获组1的内容(反转后的密钥),最后反转得到原格式密钥。
  • 注意:'c'参数开启大小写敏感匹配,确保模式匹配准确。

方法2:正则贪婪特性替换提取

利用REGEXP_REPLACE的贪婪匹配特性,删除最后一个AuditKey模式之前的所有内容,直接保留目标密钥:

SELECT 
  IF(
    REGEXP_LIKE(descripcion, r'Audit[Key]*[=|: ]*[A-Za-z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+'),
    REGEXP_REPLACE(descripcion, r'.*Audit[Key]*[=|: ]*([A-Za-z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+)', '\\1'),
    ''
  ) AS last_audit_key
FROM your_table;
  • 逻辑:.*为贪婪匹配,会覆盖最后一个AuditKey模式之前的所有字符,替换时仅保留捕获组1中的密钥内容;REGEXP_LIKE先判断字段是否存在目标模式,避免无匹配时返回原字符串。

如果需要提取包含AuditKey: 的完整字符串,可使用以下语句:

SELECT 
  IFNULL(
    REGEXP_SUBSTR(
      descripcion,
      r'Audit[Key]*[=|: ]*[A-Za-z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+',
      1,
      (LENGTH(descripcion) - LENGTH(REGEXP_REPLACE(descripcion, r'Audit[Key]*[=|: ]*[A-Za-z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+', ''))) 
      DIV LENGTH(REGEXP_SUBSTR(descripcion, r'Audit[Key]*[=|: ]*[A-Za-z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+'))
    ),
    ''
  ) AS last_audit_full
FROM your_table;
  • 逻辑:通过计算模式出现的次数,指定REGEXP_SUBSTR提取第N次出现的匹配项(即最后一次)。

内容的提问来源于stack exchange,提问作者franco pina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:38:20